C# MVC:上载文件列表并保存在个人的文件夹(名称GUID)中
我想上传来自不同用户的多个文件,并将它们保存在服务器上,每个用户都有一个单独的文件夹,其中包含他上传的文件列表 要求:如果用户上载5个文件,则所有5个文件都将存储在GUID为FolderName的单个文件夹中 下面的代码为用户上载的每个文件创建一个新文件夹。 例如:如果用户上载5个文件,则所有5个文件都将存储在5个不同的文件夹中,并具有GUID FolderName 我的控制器上传方式如下: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
##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
}