问题标签 [httppostedfilebase]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
18512 浏览

asp.net-mvc - 当参数为模型时,ASP.NET MVC 发布文件模型绑定

有没有办法让发布的文件 ( <input type="file" />) 参与 ASP.NET MVC 中的模型绑定,而无需手动查看自定义模型绑定器中的请求上下文,也无需创建仅将发布的文件作为输入的单独操作方法?

我原以为这会起作用:

但考虑到上述情况,MyFile它甚至不是绑定上下文中值提供者值的一部分。OtherProperty当然是。)但如果我这样做,它会起作用:

那么,为什么当参数是模型时没有发生绑定,我怎样才能让它工作呢?我对使用自定义模型绑定器没有任何问题,但是如何在自定义模型绑定器中执行此操作而不查看Request.Files["MyFile"]

为了一致性、清晰性和可测试性,我希望我的代码能够自动绑定模型上的所有属性,包括绑定到已发布文件的属性,而无需手动检查请求上下文。我目前正在使用Scott Hanselman 所写的方法测试模型绑定。

还是我以错误的方式解决这个问题?你会如何解决这个问题?或者由于 Request.Form 和 Request.Files 之间的分离历史,这是设计上不可能的?

0 投票
1 回答
1821 浏览

asp.net-mvc - 为什么 HttpPostedFile 不像宣传的那样执行并将下载缓冲到磁盘而不是内存?

我正在使用<input>发布多部分表单数据的标准 HTML 控件将大文件上传到 ASP.NET 服务器。这是一个 ASP.NET MVC 应用程序。

根据 MSDN,HttpPostedFile开箱即用的类缓冲到磁盘:

“文件以 MIME multipart/form-data 格式上传。默认情况下,所有大于 256 KB 的请求(包括表单字段和上传的文件)都缓存到磁盘,而不是保存在服务器内存中。”

我假设这意味着当我HttpPostedFileBase在我的控制器中访问时,当我访问HttpPostedFileBase'InputStream属性时,我可以将文件缓冲区写入某处,而不必担心服务器内存不足,这显然是一个不可行的解决方案。

下面是一些伪代码,说明我如何处理来自HttpPostedFileBase.

我的 web.config 的 httpRuntime 块如下所示:

我的实现工作正常,多个文件按预期上传,但服务器消耗了缓冲整个有效负载所需的相同内存量。我必须假设 InputStream 正在缓冲所有内容。当我上传的文件多于我的内存时,它可以预见地以OutOfMemoryException. 这是上传 800mb 文件时内存峰值的图像。

替代文字

我知道我可以使用 Flash/Silverlight 小部件或编写自定义来拦截上传并自己处理它们,但如果按照MSDN 所说的(或者我做错了)HttpModule,当前的要求将完美地工作。HttpPostedFile

0 投票
2 回答
38201 浏览

image - 如何将 HttpPostedFileBase 转换为图像?

我正在使用 ASP.NET MVC,并且我有一个上传文件的操作。文件正在正确上传。但我想要图像的宽度和高度。我想我需要先将其转换HttpPostedFileBaseImage然后继续。我怎么做?

如果有另一种更好的方法来获取图像的宽度和高度,请告诉我。

0 投票
2 回答
3084 浏览

asp.net-mvc - 谷歌浏览器中的 ASP.Net MVC 图像上传失败

我有一张图片上传表格

回帖到动作

该代码适用于除 Google Chrome 之外的所有浏览器。我的 IDE 是 Visual Studio 2k8,我还没有弄清楚如何使用它在 Google Chrome 上进行调试,但是,我抛出了错误消息,而且我知道由于某种原因在 chrome 下,以下检查没有通过:

显然,在 Chrome 下,HttpPostedFileBase 参数图片编码不正确并且丢失了它的 mime 类型,但是,这可能不是唯一的问题。Chrome下的HttpPostedFileBase参数有什么问题,我该如何解决?

感谢您的关注,并提前感谢您的帮助。

0 投票
2 回答
5584 浏览

asp.net-mvc - 模型绑定 HttpPostedFileBase,然后将文件存储到数据存储区

ASP.NET MVC 似乎正确地在 HTML 表单的文件输入字段和 HttpPostedFileBase 之间自动绑定。另一方面,它不能从文件输入字段绑定到字节数组。我试过了,但它发出了异常——一些关于无法转换为 Base64 的问题。以前我的模型类上只有字节数组属性,因为后来我需要它来将对象序列化为 XML 文件。

现在我想出了这个解决方法,它工作正常,但我不确定这是否可以:

0 投票
1 回答
413 浏览

c# - 当我尝试在 ASP.NET MVC 中上传文件时,它显示为 null

由于某种原因,参数OriginalLocation始终null在以下代码中。我究竟做错了什么?

控制器:

看法:

模型:

0 投票
1 回答
933 浏览

asp.net-mvc - ASP.NET MVC 文件上传

你好呀,

我的模型(部分)

我的行动

文件上传器

我遇到的问题是,当按下 AddDocument 按钮时,它会将一个空模型传递给我的控制器中的操作。HttpPostedFileBase 中的基本属性会给出 System.NotImplementException。

谁能告诉我我需要做什么才能正确地将我的模型传递给我的动作?

0 投票
2 回答
4904 浏览

asp.net - ASP.NET MVC 将模型 *together* 与文件一起传回控制器

好的,我已经做了几个小时了,我根本找不到解决方案。

我想从我的用户那里得到一些数据。所以首先,我使用一个控制器来创建一个接收模型的视图:

然后,我有这样的看法:

最后 - 原始控制器,但这次配置为接受数据:

该控制器的其余部分无关紧要,因为无论我做什么,(or ) 的count属性都保持为 0。我根本找不到从表单传递文件的方法(模型通过就好了)。Request.FilesRequest.Files.Keys

0 投票
3 回答
3311 浏览

c# - 如何对包含静态方法的方法进行单元测试?

这可以做到吗?这是我正在测试的方法:

在我的单元测试中,我正在使用 Rhino.Mocks 并且我想验证 _file.SaveAs() 是否被调用。我已经模拟了 _file(它是一个 HttpPostedFileBase 对象)并将其注入到该方法的类构造函数中。我想运行这个单元测试,但实际上并没有进行 Directory.CreateDirectory 调用。这可能吗?

0 投票
1 回答
3785 浏览

asp.net-mvc - System.IO.Stream 支持 HttpPostedFileBase

我有一个允许会员上传照片的网站。在 MVC 控制器中,我将 'FormCollection作为 Action 的参数。然后我将第一个文件读取为 type HttpPostedFileBase。我用它来生成缩略图。这一切都很好。

除了允许会员上传自己的照片外,我还想自己使用System.Net.WebClient导入照片。

我试图概括处理上传照片(文件)的方法,以便它可以采用通用 Stream 对象而不是特定的HttpPostedFileBase.

我试图基于 Stream 的所有内容,因为它HttpPostedFileBase有一个InputStream包含文件流的属性,并且WebClient有一个OpenRead返回 Stream 的方法。

但是,通过使用 Stream over HttpPostedFileBase,看起来我正在丢失用于验证文件的属性ContentTypeContentLength

以前没有使用过二进制流,有没有办法从流中获取ContentTypeContentLength?或者有没有办法HttpPostedFileBase使用 Stream 创建一个对象?