尝试在WebMatrix中使用Request.Files

时间:2012-10-23 18:50:13

标签: c# file razor webmatrix

大家,

我正在尝试将图像上传到我的网站,并且我已经成功地将其用于工作,但是,我需要将功能扩展到一个简单图像之外。我见过的例子使用了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,只是试图彻底,但要完善问题:我不太了解文件上传,知道如何使用上传的数据。我尝试研究这些信息,但是我没有找到任何与我相关的信息(实际上,我没有找到有关输入类型=“文件”或FileUpload方法的任何信息)。

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

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

我非常感谢我需要使用的任何语法示例。

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

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

1 个答案:

答案 0 :(得分:1)

好的,为了解决这个问题,我不得不进行测试和测试,直到最终为我工作。这是我做的:

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

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

并添加了具有特定ID的常规输入类型=“文件”,例如id =“pic1”。

接下来我能够根据id获取单个文件帖子,这真的是我需要知道如何做的主要事情,而且它真的很简单:

Request.Files["pic1"];