我该如何设置这个值?
<input type="file" />
我该如何设置这个值?
<input type="file" />
出于安全原因,您不能。
想象:
<form name="foo" method="post" enctype="multipart/form-data">
<input type="file" value="c:/passwords.txt">
</form>
<script>document.foo.submit();</script>
您不希望您访问的网站能够执行此操作,对吗?=)
你不能。
设置文件输入值的唯一方法是由用户选择文件。
这样做是出于安全原因。否则,您将能够创建一个 JavaScript,自动从客户端的计算机上传特定文件。
不是您的问题的答案(其他人已回答),但如果您想拥有上传文件字段的一些编辑功能,您可能想要做的是:
<input>
上传新文件的标签你不能。这是一种安全措施。想象一下,如果有人编写将文件输入值设置为某个敏感数据文件的 JS?
正如这里的其他人所说:您不能使用 JavaScript 自动上传任何文件。
然而! 如果您可以访问要在代码中发送的信息(即 not C:\passwords.txt
),则可以将其作为blob类型上传,然后将其视为文件。
服务器最终看到的将与实际设置<input type="file" />
. 诀窍,最终,是开始一个新XMLHttpRequest()
的服务器......
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?'});
那么,你可以用它做什么? 我用它来上传jpg 格式的HTML5 画布元素。这为用户省去了打开file
input
元素的麻烦,只需选择他们刚刚调整大小、修改等的本地缓存图像。但它应该适用于任何文件类型。