如何更改<input type="file" />上传文件的名字?

在选择文件后上传文件前,或者是点击提交的时候,如何更改上传文件的名字?

<form id="upload_form" method="post" enctype="multipart/form-data">
    <input type="file" name="upload_file">
    <input type="submit">
</form>

直接改变file.name是无效的;

var fileExtension = '.' + file.name.split('.').pop();
file.name = Math.random().toString(36).substring(7) + fileExtension;
console.log(file);

应该如何更改呢?

阅读 10.8k
4 个回答

使用FormData进行提交,修改文件名用以下方法:

formData.append(name, value, filename);

参考地址:https://developer.mozilla.org...

注意:如果是移动端,iphone请注意旋转图片角度。

希望对您有所帮助!

上传的时候用FormData提交

文件使用formdata提交

<body>
 
    <form id="form1" enctype="multipart/form-data">
        <input id="image-file" type="file" name="file1" />
        <input id="btn-submit" type="submit" value="submit" />
    </form>
</body>
<script>
    $(document).ready(function() {
 
        initImageUpload();
 
        function initImageUpload() {
            $("#btn-submit").click(function(e) {
                e.preventDefault();
 
                var everlive = new Everlive({
                    appId: "",
                    scheme: "https"
                });
 
                // construct the form data and apply new file name
                var file = $('#image-file').get(0).files[0];
 
                var newFileName = file.filename + "new";
                var formData = new FormData();
                formData.append('file', file, newFileName);
 
 
                $.ajax({
                    url: everlive.files.getUploadUrl(), // get the upload URL for the server
                    success: function(fileData) {
                        alert('Created file with Id: ' + fileData.Result[0].Id); // access the result of the file upload for the created file
                        alert('The created file Uri is available at URL: ' + fileData.Result[0].Uri);
                    },
                    error: function(e) {
                        alert('error ' + e.message);
                    },
                    // Form data
                    data: formData,
                    type: 'POST',
                    cache: false,
                    contentType: false,
                    processData: false
                });
                return false;
            });
        }
    });
</script>
推荐问题