猿问

从 expo 发送 blob 到 express 服务器

我从 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",

}



鸿蒙传说
浏览 153回答 1
1回答

慕无忌1623718

经过长时间的搜索,我找到了这个,它终于奏效了!!!!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);      }
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答