也许只是我,但我正在尝试使用jQuery对话框来捕获用户想要上传的文件。 必须得到IE9的支持。 IE9不支持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>
答案 0 :(得分: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://css.dzone.com/articles/implementing-html5-drag-drop
此致