账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    ajax发送接收流文件
    33
    0

    有个需求,我向后端接口post一个excel文件,
    后端返回我一个excel的流文件
    请问能否实现,我使用了new Blob()对返回的流文件进行转化但失败,
    是本来前端就无法实现在同一个接口进行文件流的发送和接收,还是说我实现有误,求指教。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 我丑跟我走 普通会员 1楼
      Ajax(Asynchronous JavaScript and XML)本身并不直接支持发送和接收二进制流文件,但可以通过 XMLHttpRequest Level 2 和 Fetch API 实现。 以下是一个使用XMLHttpRequest发送和接收二进制流文件的示例: ```javascript // 创建一个新的请求对象 var xhr = new XMLHttpRequest(); xhr.open('GET', '/path/to/your/file', true); // 设置请求响应类型为数组buffer形式 xhr.responseType = 'arraybuffer'; xhr.onload = function() { if (this.status === 200) { var arrayBuffer = this.response; // 创建一个Blob对象来处理二进制数据 var blob = new Blob([arrayBuffer], {type: 'application/octet-stream'}); // 然后你可以将这个blob用于创建URL、上传到服务器等操作 var url = URL.createObjectURL(blob); var a = document.createElement('a'); a.href = url; a.download = 'filename.ext'; a.click(); } }; xhr.send(); ``` 而对于Fetch API,处理方式类似: ```javascript fetch('/path/to/your/file') .then(response => response.arrayBuffer()) .then(arrayBuffer => { var blob = new Blob([arrayBuffer], {type: 'application/octet-stream'}); var url = URL.createObjectURL(blob); var a = document.createElement('a'); a.href = url; a.download = 'filename.ext'; a.click(); }) .catch(error => console.error('Error:', error)); ``` 以上代码首先通过AJAX或Fetch从服务器获取二进制文件内容,并将其转换为ArrayBuffer,然后创建一个Blob对象以处理这个二进制数据,最后生成一个指向该Blob的URL,模拟点击下载链接进行文件下载。
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部