我有这么大的问题,我需要将用户上传的文件名更改为某个哈希名称,该名称来自此表的行字段:
上传过程单击图像glyphicon然后"编辑"按钮:
我的控制器看起来像这样:
<HttpPost()>
Function UploadImage(file As HttpPostedFileBase) As ActionResult
Dim theImage = Image.FromStream(file.InputStream, True, True)
Dim theImageName = Path.GetFileNameWithoutExtension(file.FileName)
Dim Handler = New MongoDBHandler()
Handler.UploadImage(theImage, theImageName)
Return Redirect(Request.UrlReferrer.PathAndQuery)
End Function
我的观点如下:
<form id="uploadForm" action="@Url.Action("UploadImage", "CreditCard")" method="post" enctype="multipart/form-data">
<input type="file" accept=".png" class="filestyle" data-buttonName="btn-primary" name="file">
<br>
<input class="submit" type="submit" value="Upload">
</form>
如何向控制器发送显示已编辑文件名的附加字符串?
答案 0 :(得分:1)
我就是这样做的(假设我理解你的问题)......
在表单中添加新的隐藏输入
<input id="fileName" type="hidden" name="fileName" value="">
您需要在某处保存您想要的fileName。我刚刚为该示例创建了一个常规var(以js为单位)。单击编辑按钮时,从行中获取您想要的名称。
var uploadFileName = "";
$(".editRow").click(function() {
uploadfileName = $(this).closest("tr") // closest row for the edit button
.find(".No") // the 'No' column's td (assuming it has a class No)
.text(); // the text value
});
然后挂钩到你的模态表单的open事件,并用名称填充隐藏字段。
$('#myModal').on('show.bs.modal', function (e) {
$("#fileName").val(uploadFileName);
});
然后,当您提交表单时,您也应该拥有此fileName字段并使用它来设置文件的名称。我目前无法测试,但我认为你只需要将你的行动改为此,它应该都可以。如果你还有问题,我可以稍后试一试。
Function UploadImage(file As HttpPostedFileBase, string fileName) As ActionResult
就个人而言,我会更进一步,每次模态关闭时将fileName隐藏字段重置为空字符串,以确保发送正确的值或根本不发送任何值。比发送两次文件名更好(但我过于谨慎:))。
答案 1 :(得分:0)
您可以使用唯一的GUID(全局唯一标识符),可用于命名文件。以下是创建GUID的方法。
Dim sGUID As String
sGUID = System.Guid.NewGuid.ToString()
只需在生成的GUID末尾添加扩展名。 这就是GUID的样子
9245fe4a-d402-451c-b9ed-9c1a04247482
然后,使用上面的GUID字符串更改您的theImageName
,这样您就可以拥有唯一的名称。