1

每个人,

我正在尝试将图像上传到我的网站,并且我已经成功地让它工作,但是,我需要将功能扩展到一张简单的图像之外。我看到的示例使用 WebMatrix 文件助手(文件助手?是吗?哦,它是某种自动绘制 input=type"file" 字段所需的 html 的助手)。我在表单中的代码行:

@FileUpload.GetHtml(initialNumberOfFiles:1, allowMoreFilesToBeAdded:false, includeFormTag:false)

我在(IsPost)中的代码行:

var UploadedPicture = Request.Files[0];
    if(Path.GetFileName(UploadedPicture.FileName) != String.Empty)
    {
        var ContentType = UploadedPicture.ContentType;
        var ContentLength = UploadedPicture.ContentLength;
        var InputStream = UploadedPicture.InputStream;
        Session["gMugshot"] = new byte[ContentLength];
        InputStream.Read((byte[])Session["gMugshot"], 0, ContentLength);
    }
    else
    {
        Session["gMugshot"] = new byte[0];
    }

之后(IsPost)中的更多代码将其作为二进制数据存储在数据库中,我可以从中获取页面上的图像(我不想将实际图像文件保存在服务器上的文件夹中并使用 GUID等。二进制数据很好,我想占用的空间要少得多)。

我将它设置为通过使用 jQuery 读取手动创建的按钮的点击,然后隐藏和取消隐藏包含由 C# 呈现的图像的 div(从读取数据库中获取它们),从而可以点击滚动浏览图片。抱歉,如果这有点 TMI,只是想彻底,但要细化问题:我对文件上传知之甚少,不知道如何很好地处理上传的数据。我尝试研究这些信息,但没有找到任何与我相关的信息(实际上,我没有找到关于 input type="file" 或 FileUpload 方法的有用信息,真的)。

使用 input type="file" id="pic1id" 会更好吗?有没有我可以使用的东西,例如 Request.Files["pic1id"] 可以从输入元素的 id 获取文件?或者该程序是否只是简单地获取所有上传的文件,将它们放在一个等待被索引调用的逻辑组中,如下所示:“Request.Files [0]”。如果是这样,索引的顺序是什么?在开始处理数据之前,我是否需要使用 Request.Files.Count 来测试已上传的数量?

请注意,我想要单独的输入 type="file" 字段(无论是否由助手绘制)。我不想在一个输入中接受多个文件(主要是因为缺乏知识,例如,我担心我不会知道如何处理数据)。到目前为止,计划是单独的输入 type="file" 字段将在滚动图片时隐藏/取消隐藏的 div 中,因此每张图片(空间)都有自己的输入 type="file" 字段。div 的隐藏和取消隐藏、显示的(一张)图片、从数据库存储和接收二进制数据以及单击图片占位符都非常有用。几乎我只需要知道如何一次处理多个上传的图片,以便存储在他们各自的数据库“图像”字段中。

我需要使用的任何语法示例将不胜感激。

抱歉,有这么多问题,但我根本找不到太多有用的信息。

感谢任何试图提供帮助的人!

4

1 回答 1

1

好的,为了解决这个问题,我不得不测试和测试,直到最终对我有用。这是我所做的:

首先,我放弃了使用绘制 html 的助手部分,即我取出:

@FileUpload.GetHtml(initialNumberOfFiles:1, allowMoreFilesToBeAdded:false, includeFormTag:false)

并添加了一个带有一定id的常规输入type="file",比如id="pic1"。

接下来,我能够根据 id 获取单个文件 post,这确实是我需要知道如何做的主要事情,它真的就像这样简单:

Request.Files["pic1"];
于 2012-10-29T13:40:47.583 回答