Javascript jQuery文件上传,只上传单个图像并在上传前重命名

Javascript jQuery文件上传,只上传单个图像并在上传前重命名,javascript,jquery,file-upload,Javascript,Jquery,File Upload,我在用电脑 我想将上载限制为一个图像,如果选择了另一个图像,则进行替换,并在上载到服务器之前重命名。我的html代码 <span class="btn btn-success fileinput-button"> <i class="glyphicon glyphicon-plus"></i> <span>Add files...</span> <input id="fileupload" type="fi

我在用电脑

我想将上载限制为一个图像,如果选择了另一个图像,则进行替换,并在上载到服务器之前重命名。我的html代码

<span class="btn btn-success fileinput-button">
    <i class="glyphicon glyphicon-plus"></i>
    <span>Add files...</span>
    <input id="fileupload" type="file" name="files[]"> 
</span>

但是没有成功。

出于安全原因,客户端Java脚本无法控制此操作。上载文件时,可以在服务器上重命名该文件

这里给出了类似的问题和答案

最佳实践是重命名服务器端的文件,例如PHP脚本中的文件

您可以使用maxNumberOfFiles选项限制您的文件

$('#fileuploadbasic').fileupload({
    maxNumberOfFiles: 1
});

我意识到这是很久以前提出的问题,但当其他工具(如DropzoneJS)能够在文件名发送到服务器之前更改文件名时,另一个回答是不完整的。在仔细阅读了源代码之后,jQuery文件上传也具备了这个功能

在jQuery File Upload
submit
事件回调中,或在调用
data.submit()
之前的任何时候,更改
文件
数组并设置
uploadName
。例如:

$('#fileupload').fileupload({
    maxNumberOfFiles: 1,
    submit: function(e, data) {
        data.files[0].uploadName = 'mynewfilename.jpg';
    }
});
虽然浏览器控制的
文件
对象上的
名称
属性是只读的,但这不会阻止定义新属性。jQuery文件上传发送
uploadName
(如果存在),否则返回
name


当然,这里没有排除服务器端验证传入数据的责任,但它确实表明可以更改jQuery File Upload发送到服务器的文件名。

我解决了这个问题。它对这类问题很有用。分享它是因为可能需要它的人投了赞成票。感谢
文件名只能在服务器端更改,例如,在PHP脚本中,您的陈述太过确凿,不可能是真的。我最近发布了一个完整的、可重用的jQuery文件上传用户界面,它可以方便地允许用户修改文件名:
$('#fileupload').fileupload({
    maxNumberOfFiles: 1,
    submit: function(e, data) {
        data.files[0].uploadName = 'mynewfilename.jpg';
    }
});