How to set a value to a file input in HTML?

前端 未结 8 1947
天命终不由人
天命终不由人 2020-11-21 04:45

How can I set the value of this?


8条回答
  •  北荒
    北荒 (楼主)
    2020-11-21 05:20

    As everyone else here has stated: You cannot upload a file automatically with JavaScript.

    HOWEVER! If you have access to the information you want to send in your code (i.e., not passwords.txt), then you can upload it as a blob-type, and then treat it as a file.

    What the server will end up seeing will be indistinguishable from someone actually setting the value of . The trick, ultimately, is to begin a new XMLHttpRequest() with the server...

    function uploadFile (data) {
            // define data and connections
        var blob = new Blob([JSON.stringify(data)]);
        var url = URL.createObjectURL(blob);
        var xhr = new XMLHttpRequest();
        xhr.open('POST', 'myForm.php', true);
    
            // define new form
        var formData = new FormData();
        formData.append('someUploadIdentifier', blob, 'someFileName.json');
    
            // action after uploading happens
        xhr.onload = function(e) {
            console.log("File uploading completed!");
        };
    
            // do the uploading
        console.log("File uploading started!");
        xhr.send(formData);
    }
    
        // This data/text below is local to the JS script, so we are allowed to send it!
    uploadFile({'hello!':'how are you?'});
    

    So, what could you possibly use this for? I use it for uploading HTML5 canvas elements as jpg's. This saves the user the trouble of having to open a file input element, only to select the local, cached image that they just resized, modified, etc.. But it should work for any file type.

提交回复
热议问题