循环由uploadify在MVC3中上传的文件

时间:2011-08-08 22:49:04

标签: asp.net-mvc-3 c#-4.0 file-upload uploadify

我使用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
}

1 个答案:

答案 0 :(得分:0)

您需要的是针对同一操作的多个文件的帖子。为了做到这一点,没有必要使用像uploadify这样的库。您可以轻松做到的是:只要用户选择了一个文件并在其位置创建一个新文件元素,就可以编写javascript来隐藏文件元素。这样,你有多个文件元素指向不同的文件,除了一个被隐藏,但存在于页面上,当用户提交表单时,你得到Request.Files数组中的所有文件。我将编辑这个答案并尽快给你一个样本。

编辑:

以下是一个例子:

http://the-stickman.com/web-development/javascript/upload-multiple-files-with-a-single-file-element/

它有点基础,你可以让它工作。