如何使用RNfetchBlob上传视频

时间:2019-03-16 08:25:12

标签: react-native

我是本机反应的新手。我想将视频上传到服务器。如何使用RNfetchBlob上传视频?
有人可以帮助我吗?谢谢。

2 个答案:

答案 0 :(得分:2)

distinguishable word

答案 1 :(得分:0)

有两种方法都可以尝试。两者都应该起作用。另外,如果使用Express Node.js后端,则将后端配置为处理Blob数据或表单数据,然后将multer或Express-formidable中间件添加到该特定路由。

在前端,这两种方法均有效 1。

`postVideo = (video,url) =>  {
 RNFetchBlob.fetch('POST',url, {
     'content-type': 'multipart/form-data',
     "Accept":"multipart/form-data",
     'access-token': AuthToken.token, //token from server
  },[
    //the value of name depends on the key from server
    {name: 'video', filename: 'vid.mp4', data: RNFetchBlob.wrap(video.uri) },
  ]).then(response => response.json())
    .then(response => {
        if (response.status === 'success') {
            alert("Upload success");
            this.props.navigation.navigate('publish');
        } else {
           alert(response.msg);
        }})
     .catch((err) => {
         alert(err);
    })
}`

2。

`async startRecording() {
 this.setState({ recording: true });
 // default to mp4 for android as codec is not set
 const { uri, codec = "mp4" } = await this.camera.recordAsync();
 this.setState({ recording: false, processing: true });
 const type = `video/${codec}`;

 const data = new FormData();
 data.append("video", {
   name: "mobile-video-upload",
   type,
   uri
 });

 try {
  await fetch(ENDPOINT, {
  method: "post",
  body: data
  });
  } catch (e) {
   console.error(e);
  }

  this.setState({ processing: false });
  }`