Javascript 如何使用XMLHttpRequest上传预定义文件?

Javascript 如何使用XMLHttpRequest上传预定义文件?,javascript,html,Javascript,Html,假设我有一个data.txt文件,我想使用POST和XHR发送它 我找到了。我所有的谷歌搜索都使用了FormData对象 <input type="file" id="uploadfile" name="uploadfile" /> <input type="button" value="upload" onclick="upload()" /> <script> var client = new XMLHttpRequest(); function up

假设我有一个data.txt文件,我想使用POST和XHR发送它

我找到了。我所有的谷歌搜索都使用了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" />
但显然我们只是


那么,无论是否使用FormData,我都知道我想发送此文件而不选择它,如何实现这一点呢?

出于非常明显的安全原因,您的要求是不可能的

想象一下,一个网站可以从你的机器上抓取它想要的任何文件,并将其上传到它的服务器上,而不需要你的任何交互或授权


但你能做的是,为了确保上传的文件正确无误,需要添加一个服务器端,在处理之前检查上传的文件名是否为data.txt。

想象一下,任何人都可以从你的计算机上选择要上传的文件。这是不可能的。真的,我只能上传我自己选择的文件吗?这不是一个巨大的安全问题吗违反我可以写一个网站,将随机文件发送到server@user181716对这就是我的想法。否则会引起很大的安全问题。您可以尝试创建一个不使用浏览器运行的脚本。由于web安全原因,浏览器阻止了您尝试实现的目标。这与无法从“%”获取文件的完整本地路径的原因相同。