【问题标题】:Trying to work with Request.Files in WebMatrix尝试在 WebMatrix 中使用 Request.Files
【发布时间】:2012-10-23 18:50:12
【问题描述】:

大家,

我正在尝试将图像上传到我的网站,并且我已经成功地让它工作,但是,我需要将功能扩展到一张简单的图像之外。我看到的示例使用 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 的隐藏和取消隐藏、显示的(一张)图片、存储和接收来自数据库的二进制数据以及单击图片占位符都非常有用。几乎我只需要知道如何一次处理多个上传的图片,以便存储在各自的数据库“图像”字段中。

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

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

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

【问题讨论】:

标签: c# file razor webmatrix


【解决方案1】:

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

首先,我放弃了使用绘制html的helper部分,也就是我取出来了:

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

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

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

Request.Files["pic1"];

【讨论】:

  • 感谢您发布您的解决方案。很高兴你把它整理出来。
  • @spike.y 没有问题!很高兴你能用上它!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多