【发布时间】:2013-06-12 06:23:27
【问题描述】:
我有一个 ASP.NET MVC 网站。我需要一个页面,用户必须在其中输入多个字段,包括一个图像文件。
我可以找到很多很多关于使用 MVC 上传文件的参考资料。但他们不会将文件作为包含其他字段的表单的一部分上传。
理想情况下,字段和文件将发送到单个控制器。有什么建议吗?
【问题讨论】:
-
你是使用ajax调用还是直接提交表单?
我有一个 ASP.NET MVC 网站。我需要一个页面,用户必须在其中输入多个字段,包括一个图像文件。
我可以找到很多很多关于使用 MVC 上传文件的参考资料。但他们不会将文件作为包含其他字段的表单的一部分上传。
理想情况下,字段和文件将发送到单个控制器。有什么建议吗?
【问题讨论】:
如果你不使用第三方库,试试这个:
型号
public class Strategy
{
public int ID { get; set; }
public string Name { get; set; }
public byte[] File { get; set; }
}
查看
@model TEST.Model.Strategy
@using (Html.BeginForm("Add", "Strategy", FormMethod.Post, new { @id = "frmStrategy", enctype = "multipart/form-data" }))
{
@Html.TextBoxFor(x => x.Name)
<input id="templateFile" name="templateFile" type="file" />
@Html.HiddenFor(x => x.ID)
}
控制器
[HttpPost]
public ActionResult Add(Strategy model, HttpPostedFileBase templateFile)
{
if (templateFile != null && templateFile.ContentLength > 0)
{
try
{
var fname = Path.GetFileName(templateFile.FileName);
using (MemoryStream ms = new MemoryStream())
{
templateFile.InputStream.CopyTo(ms);
byte[] array = ms.GetBuffer();
model.File = array;
}
...
【讨论】:
您可以使用FineUploader。 See Demo
Valums Uploader。它使用纯 Javascript(使用 Iframe 上传文件)
您可能需要使用客户端插件。 Plupload 是一种可能的选择。以及here's an example 如何将它集成到您的 MVC 应用程序中。另一个支持此功能的流行插件是Uploadify。
Asp.net mvc 3 file uploads using the fileapi
在http://jquery.malsup.com/form/#file-upload 上查看进度演示 1、2 和 3
【讨论】: