更改上传的文件名asp.net mvc

时间:2017-03-04 13:39:47

标签: jquery asp.net asp.net-mvc vb.net razor

我有这么大的问题,我需要将用户上传的文件名更改为某个哈希名称,该名称来自此表的行字段: enter image description here

上传过程单击图像glyphicon然后"编辑"按钮: enter image description here

此模式打开后: enter image description here

我的控制器看起来像这样:

<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>

如何向控制器发送显示已编辑文件名的附加字符串?

2 个答案:

答案 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,这样您就可以拥有唯一的名称。