【问题标题】:File Upload as Part of Form with Other Fields文件上传作为表单的一部分与其他字段
【发布时间】:2013-06-12 06:23:27
【问题描述】:

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

我可以找到很多很多关于使用 MVC 上传文件的参考资料。但他们不会将文件作为包含其他字段的表单的一部分上传。

理想情况下,字段和文件将发送到单个控制器。有什么建议吗?

【问题讨论】:

  • 你是使用ajax调用还是直接提交表单?

标签: asp.net-mvc file-upload


【解决方案1】:

如果你不使用第三方库,试试这个:

型号

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;
                    }
                    ...

【讨论】:

  • 我认为策略模型中的 File 属性不是必须的。
  • 没错,没必要也没必要。这只是一个例子...例如,如果您将文件保存在一个表中,并使用一些 ORM ...
【解决方案2】:

您可以使用FineUploaderSee 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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-01
    • 2018-12-01
    • 2019-04-24
    • 2014-05-19
    • 2016-07-16
    • 2011-07-06
    • 2014-01-14
    • 1970-01-01
    相关资源
    最近更新 更多