为了账号安全,请及时绑定邮箱和手机立即绑定

从 expo 发送 blob 到 express 服务器

从 expo 发送 blob 到 express 服务器

鸿蒙传说 2022-05-26 14:07:29
我从 URI 获取图像的 blob 以将其发送到我的服务器以存储它。我使用获取请求获取图像并且一切都正确,但是,发布请求有问题。服务器接收到的 blob 的大小始终为 0。我确信我得到了正确的图像 blob,因为在将 blob 转换为 base64 后我可以在前端显示它。这是代码。const url = "https://lh3.googleusercontent.com/a-/AOh14Gj1THuWiRu7Vpn85YETJN-aMui7NE8bpnNWOzdi"      var x, base64data;      const scope = this      var formData = new FormData();         var request = new XMLHttpRequest();      request.responseType = "blob";      request.onload = function () {          const blob = request.response          formData.append("file", blob.data);          console.log(blob.data)          //Converting the image to base64 so i could display it,          //and make sure that the blob received is not corrupted          const fileReaderInstance = new FileReader();          fileReaderInstance.readAsDataURL(blob);           fileReaderInstance.onload = () => {            base64data = fileReaderInstance.result;                          scope.setState({base64data: base64data})          }          //Sending the blob to the server          x = new XMLHttpRequest();          x.open("POST",`${link}images/upload/${data.id}`,true);          x.setRequestHeader("Content-type", "image/jpeg");          x.setRequestHeader("Content-Length", formData.length);          x.send(formData);      }      request.open("GET", url);      request.send();console.log(blob.data)节目_Object {  "blobId": "69B8ACFE-5E31-4F16-84D8-002B17399F7E",  "name": "unnamed.jpg",  "offset": 0,  "size": 74054,  "type": "image/jpeg",}
查看完整描述

1 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

经过长时间的搜索,我找到了这个,它终于奏效了!!!!


postPicture(data) {

    const apiUrl = `${link}images/upload/${data.id}`;

    const uri = "https://lh3.googleusercontent.com/a-/AOh14Gj1THuWiRu7Vpn85YETJN-aMui7NE8bpnNWOzdi";

    const fileType = "jpeg";

    const formData = new FormData();

        formData.append('file', {

          uri,

          name: `photo.${fileType}`,

          type: `image/${fileType}`,

        });

    const options = {

          method: 'POST',

          body: formData,

          headers: {

            Accept: 'application/json',

            'Content-Type': 'multipart/form-data',

          },

        };

    return fetch(apiUrl, options);

      }


查看完整回答
反对 回复 2022-05-26
  • 1 回答
  • 0 关注
  • 152 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号