繁体   English   中英

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

[英]How to upload pre-defined file with XMLHttpRequest?

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

我发现了这个 我所有的Google搜索都导致使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM