3

也许只是我,但我正在尝试使用 jQuery 对话框来捕获用户想要上传的文件。它必须受 IE9 支持。IE9 不支持在我遇到的许多示例和第 3 方工具中使用的 FormData 对象。因此,为了使我的请求不刷新整个页面,我必须将我的上传文件放入 iFrame 中?真的吗?我知道我可以得到一些 Flash 上传器,但我们的网站不支持 Flash,所以现在不可能。

请..请有人告诉我我做错了,有一种更简单的方法,因为我似乎找不到它.. 至少在 IE9 上不能工作。

形式

<form action="/ControllerName/ActionName" method="post" enctype="multipart/form-data">
    <label for="file">Filename:</label>
    <input type="file" name="file" id="file" />
    <input type="submit" name="submit" value="Submit" />
</form> 

然后进入这样的 iFrame

<iframe src="myUrl"></iframe>
4

1 回答 1

0

看法:

@using (Html.BeginForm("FileUpload","Message",FormMethod.Post,new { enctype="multipart/form-data"})) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>Message</legend>

//your html here

                                <input type="file" name="files"/>

    </fieldset>

控制器:

[HttpPost]
        public ActionResult FileUpload(FormCollection values, IEnumerable<HttpPostedFileBase> files)
        {
             //do what you want with form values then for files

           foreach (var file in files)
            {
                if (file.ContentLength > 0)
                {
                    byte[] fileData = new byte[file.ContentLength];
                    file.InputStream.Read(fileData, 0, file.ContentLength);

                   //do what you want with fileData
                }
            }
        }

我提供多个文件上传,所以我使用

IEnumerable<HttpPostedFileBase> files 

如果你只想要一个文件,那么只使用

HttpPostedFileBase file  

并在您的视图中将输入类型更改为

<input type="file" name="file"/>  

就那么简单。问候

编辑:

看看更多好的例子:

http://www.strathweb.com/2012/04/html5-drag-and-drop-asynchronous-multi-file-upload-with-asp-net-webapi/

http://css.dzone.com/articles/implementing-html5-drag-drop

问候

于 2012-05-29T16:33:41.583 回答