当前位置:  开发笔记 > 后端 > 正文

尝试使用ASP.NET MVC上传文件

如何解决《尝试使用ASP.NETMVC上传文件》经验,为你挑选了2个好方法。

我正在尝试使用ASP.NET MVC上传文件.

以下代码完美无缺:

// Read in the image data.
byte[] binaryData = null;
HttpPostedFileBase uploadedFile = Request.Files["ImageFileName"];
if (uploadedFile != null &&
    uploadedFile.ContentLength > 0)
    {
        binaryData = new byte[uploadedFile.ContentLength];
        uploadedFile.InputStream.Read(binaryData, 
                                      0,
                                      uploadedFile.ContentLength);
    }

但我想要做的是使用期货装配中的新FileCollectionModelBinder发现.

我在这里和这里发现了这两篇博客文章,解释了该怎么做.我按照这些说明但没有运气 - > file对象总是如此null.

这是我的方法.

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Include = "Subject, Content")]
                           Post post, 
                           HttpPostedFileBase file)
{
    UpdateModel(post);
    ...
}

请注意我是如何上传文件并将一些帖子信息上传到Post对象的.

有人可以提出任何建议吗?

为了记录,我在我的global.asax.cs中连接了ModelBinder.我还确保该表单是添加了enctype的帖子: -

Pure.Krome.. 10

没有血腥的方式:(

我想出了答案,这很蹩脚.

我必须让参数NAME与input type ="file"元素的Id/Name值相同!(不确定它是否是元素值中的任何一个或两个......我没有检查出来).

所以这就是答案.

Html输入元素.(注意Id/Name的值)


控制器方法

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Include = "Subject, Content")]Post post,
    HttpPostedFileBase imageFileName)
{
...
}

shees!



1> Pure.Krome..:

没有血腥的方式:(

我想出了答案,这很蹩脚.

我必须让参数NAME与input type ="file"元素的Id/Name值相同!(不确定它是否是元素值中的任何一个或两个......我没有检查出来).

所以这就是答案.

Html输入元素.(注意Id/Name的值)


控制器方法

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create([Bind(Include = "Subject, Content")]Post post,
    HttpPostedFileBase imageFileName)
{
...
}

shees!



2> joshcomley..:

请记住,您还需要打开这样的表单:

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有