2015-04-21 35 views
0

假設我有一個文件data.txt,我想用POST和XHR發送它。如何使用XMLHttpRequest上傳預定義的文件?

我找到了this。我所有的谷歌搜索都導致使用FormData對象。

<input type="file" id="uploadfile" name="uploadfile" /> 
<input type="button" value="upload" onclick="upload()" /> 

<script> 
var client = new XMLHttpRequest(); 

function upload() 
{ 
    var file = document.getElementById("uploadfile"); 

    /* Create a FormData instance */ 
    var formData = new FormData(); 
    /* Add the file */ 
    formData.append("upload", file.files[0]); 

    client.open("post", "/upload", true); 
    client.setRequestHeader("Content-Type", "multipart/form-data"); 
    client.send(formData); /* Send to server */ 
} 

/* Check the response status */ 
client.onreadystatechange = function() 
{ 
    if (client.readyState == 4 && client.status == 200) 
    { 
    alert(client.statusText); 
    } 
} 
</script> 

這個例子看起來不錯,但我希望文件上傳時沒有選擇它,而不是在這個代碼中的情況。

所以我想過把一個自定義值在文件輸入這樣的:

<input value = "data.txt" type="file" id="uploadfile" name="uploadfile" /> 

但很顯然,我們只是can't do it

那麼我怎樣才能實現這個有或沒有使用FormData知道我想發送這個文件而不採摘它?

+1

想象一下,任何人都可以選擇任何文件從計算機上傳下載。它無法完成。 – epascarello

+0

真的,我只能上傳自己挑選的文件嗎? – user181716

+0

這不是一個巨大的安全違規?我可以寫一個網站發送隨機文件到服務器 – beautifulcoder

回答

0

由於非常明顯的安全原因,你所要求的是不可能的。

想象一下,一個網站可以從您的機器上抓取任何想要的文件,並將其上傳到服務器上,而無需任何交互或授權。

儘管如此,爲了確保上傳正確的文件,您可以做的事情是添加服務器端,檢查在處理之前正在上傳的文件的名稱是data.txt

相關問題