【问题标题】:Change uploaded file name asp.net mvc更改上传的文件名 asp.net mvc
【发布时间】:2017-07-24 14:44:56
【问题描述】:

我有这么大的问题,我需要将用户上传的文件名更改为某个哈希名称,该名称是从该表的行字段构建的:

上传过程是单击图像字形图标,然后单击“编辑”按钮:

此模式打开后:

我的控制器是这样的:

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

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

【问题讨论】:

  • 似乎你只需要用一些自定义字符串交换theImageName。你试过吗?
  • 我需要通过JS从表中接收名字。

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


【解决方案1】:

您可以使用唯一且可用于命名文件的 GUID(全局唯一标识符)。以下是创建 GUID 的方法。

Dim sGUID As String
sGUID = System.Guid.NewGuid.ToString()

只需在生成的 GUID 末尾添加扩展名即可。 这就是 GUID 的样子

9245fe4a-d402-451c-b9ed-9c1a04247482

然后,用上面的 GUID 字符串更改您的 theImageName,这样您就可以拥有一个唯一的名称。

【讨论】:

    【解决方案2】:

    我会这样做(假设我理解你的问题)...

    在您的表单中添加一个新的隐藏输入

    <input id="fileName" type="hidden" name="fileName" value="">
    

    您需要将所需的文件名保存在某处。我刚刚为示例创建了一个常规 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
    });
    

    然后挂钩到您的模态表单的打开事件并用名称填充隐藏字段。

    $('#myModal').on('show.bs.modal', function (e) {
        $("#fileName").val(uploadFileName);
    });
    

    然后,当您提交表单时,您也应该有这个 fileName 字段并使用它来设置文件名。我目前无法测试,但我认为您只需将您的操作更改为此,它应该可以工作。如果您仍有问题,我可以稍后再试。

     Function UploadImage(file As HttpPostedFileBase, string fileName) As ActionResult
    

    就个人而言,我会更进一步,每次模式关闭时将 fileName 隐藏字段重置为空字符串,以确保发送正确的值或根本不发送。比发送两次文件名更好(但我过于谨慎:))。

    【讨论】:

    • “字符串文件名”,是在提交时自动传递给控制器​​的吗?
    猜你喜欢
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 2016-05-28
    • 2011-07-08
    • 2013-06-10
    相关资源
    最近更新 更多