文件上载作为表单的一部分与其他字段

Jon*_*ood 9 asp.net-mvc file-upload

我有一个ASP.NET MVC网站.我需要一个页面,用户必须输入多个字段,包括图像文件.

我可以找到许多使用MVC上传文件的参考资料.但是他们不会将文件作为表单的一部分上传到其他字段.

理想情况下,字段和文件将发送到单个控制器.有小费吗?

Mat*_*ate 11

如果您不使用第三方库,请尝试以下操作:

模型

public class Strategy 
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public byte[] File { get; set; }

    }
Run Code Online (Sandbox Code Playgroud)

视图

 @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)

        }
Run Code Online (Sandbox Code Playgroud)

调节器

[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;
                    }
                    ...
Run Code Online (Sandbox Code Playgroud)

  • 没错,没有必要或没必要.这只是一个例子......例如,如果你将文件保存在表中,并使用一些ORM ... (2认同)

wak*_*med 6

您可以使用FineUploader.见演示

Valums Uploader.它使用纯Javascript(使用Iframe上传文件)

您可能需要使用客户端插件.Plupload是一种可能的选择.以下是如何将其集成到MVC应用程序中的示例.另一个支持此功能的流行插件是Uploadify.

使用fileapi上传Asp.net mvc 3文件

请参阅http://jquery.malsup.com/form/#file-upload上的进度演示1,2和3

参考:http://forums.asp.net/t/1897410.aspx/1?MVC4 + File + Upload