javascript - 如何在浏览器中使用JavaScript从<input type ="file"/>获取curl -T --upload-data选项的等效数据格式?

标签 javascript curl filereader

curl 有-T, --upload-file选项“将指定的本地文件传输到远程 URL”。

curl -v "http://some/data/consumer" -XPOST -T "some/file/name"

如何使用 curl -T 获取文件的等效数据,来自<input type="file" />使用 JavaScript?

最佳答案

如果您想要从 javascript 访问数据,例如通过数据 View ,那么您可以使用 Blob.arrayBuffer()方法,它将返回一个解析为 ArrayBuffer 的 Promise。由于File接口(interface)继承自Blob,因此该方法也可以直接在File对象上使用。

document.getElementById('inp').onchange = async function(evt) {
  const buf = await this.files[0].arrayBuffer();
  console.log( buf.byteLength );
  const view = new Uint8Array(buf, 0, 4); // create a view of 4 first bytes
  console.log(view);
};
<input type="file" id="inp">

请注意,此方法可能需要在旧版浏览器中使用polyfill。

<小时/>

但是,如果您只是希望将该文件作为二进制文件发送到服务器,则 XHRfetch 接受 Blob 作为请求正文:

// using XHR
const xhr = new XMLHttpRequest();
xhr.open('POST', url);
xhr.send(input.files[0]);

// using fetch
fetch(url, { method: "POST", body: inp.files[0] } );

// using axios
axios.post(url, inp.files[0]);

关于javascript - 如何在浏览器中使用JavaScript从&lt;input type ="file"/>获取curl -T --upload-data选项的等效数据格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59836220/

相关文章:

javascript - 如何在javascript中调用同一函数内部和外部的函数

javascript - react native : Cannot read propert 'length' of undefined

javascript - HTML5 文件阅读器问题

javascript - 在匹配正则表达式中获取多行

javascript If/Else 循环;异步问题

javascript - JQuery - 相对于按钮定位弹出窗口

bash - 使用 cURL 在 BASH 脚本中发送 JSON

php - 如何使用 PHP-curl 发送对 "multipart/related"Content-Type 的请求?

bash - curl ——失败而不抑制标准输出

java - Java中如何查找某个单词在哪一行