我使用uploadify在MVC 3应用中上传多个文件。如果我选择多个文件并点击上传,我会在控制器中逐个获取文件。我想要的是发布的文件作为集合出现,以便我可以遍历它们。
我看到了一些related post here,但我不能使用它,因为它不使用uploadify。
知道该怎么做吗?
Razor查看代码:
<input type="file" id="file_upload" name="file_upload" />
<a onclick="Upload();" style="font:12px Arial; text-decoration: none; outline: none;">Upload</a>
<input type="hidden" id="CanFiles" />
$('#file_upload').uploadify({
'uploader': '/content/uploadify/uploadify.swf',
'script': '/upload/UploadFiles',
'scriptData': { 'auth': auth, 'sid': sid, 'multi': 1 },
'cancelImg': '/content/uploadify/cancel.gif',
'folder': '/content/uploadify/uploads',
'auto': false,
'multi': true,
'simUploadLimit': 1,
'expressInstall': '/content/uploadify/expressInstall.swf',
});
当前控制器操作:
public ActionResult UploadFiles()
{
foreach (string fileName in Request.Files)
{
//this always get 1 file and action gets called once for each file
}
}
这就是我想要的:
public ActionResult UploadFiles(IEnumerable<HttpPostedFileBase> files)
{
//loop the files posted
}
答案 0 :(得分:0)
您需要的是针对同一操作的多个文件的帖子。为了做到这一点,没有必要使用像uploadify这样的库。您可以轻松做到的是:只要用户选择了一个文件并在其位置创建一个新文件元素,就可以编写javascript来隐藏文件元素。这样,你有多个文件元素指向不同的文件,除了一个被隐藏,但存在于页面上,当用户提交表单时,你得到Request.Files数组中的所有文件。我将编辑这个答案并尽快给你一个样本。
编辑:
以下是一个例子:
http://the-stickman.com/web-development/javascript/upload-multiple-files-with-a-single-file-element/
它有点基础,你可以让它工作。