C# MVC:上载文件列表并保存在个人的文件夹(名称GUID)中

C# MVC:上载文件列表并保存在个人的文件夹(名称GUID)中,c#,asp.net,asp.net-mvc,asp.net-mvc-4,razor-2,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Razor 2,我想上传来自不同用户的多个文件,并将它们保存在服务器上,每个用户都有一个单独的文件夹,其中包含他上传的文件列表 要求:如果用户上载5个文件,则所有5个文件都将存储在GUID为FolderName的单个文件夹中 下面的代码为用户上载的每个文件创建一个新文件夹。 例如:如果用户上载5个文件,则所有5个文件都将存储在5个不同的文件夹中,并具有GUID FolderName 我的控制器上传方式如下: ##Controller Code## public string Upload(HttpP

我想上传来自不同用户的多个文件,并将它们保存在服务器上,每个用户都有一个单独的文件夹,其中包含他上传的文件列表

要求:如果用户上载5个文件,则所有5个文件都将存储在GUID为FolderName的单个文件夹中

下面的代码为用户上载的每个文件创建一个新文件夹。 例如:如果用户上载5个文件,则所有5个文件都将存储在5个不同的文件夹中,并具有GUID FolderName

我的控制器上传方式如下:

 ##Controller Code##

    public string Upload(HttpPostedFileBase fileData)
    {            var testfolder = this.Server.MapPath("~/uploads/");
             string newGuid = Guid.NewGuid().ToString();
             string pathToCreate = Path.Combine(testfolder, newGuid);
             if (!System.IO.Directory.Exists(pathToCreate))
             {
                 System.IO.Directory.CreateDirectory(System.IO.Path.Combine(testfolder, newGuid));
             }
             var fileName = pathToCreate + "//" + System.IO.Path.GetFileName(file.FileName);
             file.SaveAs(fileName);                              
             return "OK"; 
     }
##视图代码##

@{
Layout=“~/Views/Shared/_Layout.cshtml”;
}
$(函数(){
$(“#多文件”)。上载({
“swf”:“Scripts/uploadify.swf”,
“cancelImg”:“/Images/trash.jpg”,
“buttonText”:“添加文档”,
“上传者”:“上传/上传”,
'文件夹':'/uploads',
“数据类型”:“json”,
'fileDesc':'Image Files',
“fileExt”:“,/”*.jpg;*.jpeg;*.gif;*.png”,
"多":对,,
“removeCompleted”:false,
“自动”:false,
“高度”:“30px”,
'queueID':'fileQueue'
});
});

好的,鉴于您不能使用会话,我建议如下:

在视图中生成GUID,并将url作为发布到的url的一部分包括在内:

警告:此代码没有保证,我还没有测试过,所以可能需要一些调整。请考虑背后的想法更重要。p> 查看代码:

 $(function () {

     var guid= '@(Guid.NewGuid().ToString())'; //generated on render time

     $("#multipleFiles").uploadify({
        'swf': 'Scripts/uploadify.swf',
        'cancelImg': '/Images/trash.jpg',
        'buttonText': 'Add Documents',
        'uploader': 'Upload/Upload?guid='+guid, //modified to include guid
        'folder': '/uploads',
        'dataType': 'json',
        'fileDesc': 'Image Files',
        'fileExt': '', //'*.jpg;*.jpeg;*.gif;*.png',
        'multi': true,
        'removeCompleted': false,
        'auto': false,
        'height': '30px',
        'queueID': 'fileQueue'
     });
});
控制器代码:

public string Upload(HttpPostedFileBase fileData, Guid guid)  {
    //now you can use the guid to save the files
}

代码中没有提到用户。(如何)您的用户登录?(如何)存储用户属性?例如,您可以在会话中为每个用户保存GUID。@CodeCaster。。在这里,我从cookies中获取用户…如果不使用会话,也无法完成此操作,因为我希望使用每个用户的Guid将文件列表存储在特定文件夹中。任何帮助都将不胜感激。:)“每个用户的Guid”-这就是为什么我建议在会话中存储Guid,因为会话是每个用户的…@CodeCaster。。。。抱歉,由于会话的默认时间为20分钟。如果同一用户上载其他文件集,则这些文件将保存在同一文件夹下。在这里,我的要求是将每组文件保存在不同的文件夹中,并且对于每个上载提交操作(包含多个文件),该文件夹应该是唯一的。您的问题不在于文件夹或GUID,而是基于每个用户存储属性。您必须生成GUID一次,并根据您管理用户的方式,将其与用户的配置文件一起存储。根据您的建议,现在GUID对于用户是一个常量。如果同一用户上载其他文件集,则这些文件将保存在同一文件夹下。这里我的要求是将每组文件保存在不同的文件夹中,并且对于每个上传提交操作(包含多个文件),该文件夹应该是唯一的。好的,我的错,我没有正确理解您。我要编辑并再试一次。好了,第二次尝试。哇..真让人兴奋。。您的解决方案在运行中没有任何问题…非常感谢..::)当同一用户在上载两个文件之间刷新页面时,GUID仍然会有所不同。
public string Upload(HttpPostedFileBase fileData, Guid guid)  {
    //now you can use the guid to save the files
}