Asp.net mvc ASP.NET MVC使用用户id获取文件上载名称并应用于单独的字段
我有文件下载和上传工作正常,但我试图添加用户id的文件名的开头,以及应用文件名到一个单独的字段 例如: 上传文件:(UserID)\u FileName.docx 文件名:(UserID)\u FileName.docx 我之所以希望如此,是因为我正在将文件上载到服务器,而不是DB,但我希望DB具有上载文件的特定用户的文件名记录 在我的控制器Create()中,我有这个用于上传的代码段Asp.net mvc ASP.NET MVC使用用户id获取文件上载名称并应用于单独的字段,asp.net-mvc,file-upload,filenames,userid,Asp.net Mvc,File Upload,Filenames,Userid,我有文件下载和上传工作正常,但我试图添加用户id的文件名的开头,以及应用文件名到一个单独的字段 例如: 上传文件:(UserID)\u FileName.docx 文件名:(UserID)\u FileName.docx 我之所以希望如此,是因为我正在将文件上载到服务器,而不是DB,但我希望DB具有上载文件的特定用户的文件名记录 在我的控制器Create()中,我有这个用于上传的代码段 if (file != null && file.ContentLength > 0)
if (file != null && file.ContentLength > 0)
{
var fileName = User.Identity.GetUserId() + "_" + Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/UploadFiles"), fileName);
file.SaveAs(path);
}
在cshtml中,我有以下两个字段
<div class="form-group">
@Html.Label("Upload File", new { @class = "control-label col-md-2" })
<div class="col-md-10">
<input type="file" name="file" />
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.FileName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBox("FileName", (object)ViewBag.FileName)
</div>
</div>
最后,我实际上会隐藏文件名字段,或者只是在发布过程中进行处理。因此,我确信有一种不同的/更好的方法可以做到这一点。事实上,几小时后我自己就找到了。我把事情复杂化了 在控制器中,我添加了
var userName = User.Identity.GetUserName();
var userAccount = db.users.Where(m => m.Email == userName).ToList();
var userId = userAccount[0].UserID;
var fileName = userId + "_" + Path.GetFileName(file.FileName);
application.FileName = Path.GetFileName(file.FileName);
我从cshtml中删除了FileName字段,并从控制器中删除了“ViewBag.FileName=Path.GetFileName(file.FileName);”
从cshtml中删除
<div class="form-group">
@Html.LabelFor(model => model.FileName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBox("FileName", (object)ViewBag.FileName)
</div>
</div>
@LabelFor(model=>model.FileName,htmlAttributes:new{@class=“controllabel col-md-2”})
@Html.TextBox(“文件名”,(对象)ViewBag.FileName)
<div class="form-group">
@Html.LabelFor(model => model.FileName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBox("FileName", (object)ViewBag.FileName)
</div>
</div>