如何在React Native中将资产库中的文件上传到Express服务器?

时间:2017-12-26 17:02:50

标签: express react-native multer

我有我的视频文件assets-library://asset/asset.mov?id=766BDDA3-F0EB-43B3-B719-4EA851692B91&ext=mov,我现在尝试将其上传到我的Express服务器。

const uri = 'http://localhost:3000/upload';
const formData = new FormData();
formData.append('file', 'assets-library://asset/asset.mov?id=766BDDA3-F0EB-43B3-B719-4EA851692B91&ext=mov');

fetch(uri, {
    method: 'POST',
    headers: {
      Accept: 'application/json',
      'Content-Type': 'multipart/form-data boundary=gc0p4Jq0M2Yt08jU534c0p'
    },
    body: formData
  })
    .then(res => {
      console.log({ res });
    })
    .catch(err => {
      console.log(err);
    });

My Express Server API端点:

app.post('/upload', upload.single('file'), (req, res) => {
  console.log(req.file);
  res.send('Done');
});

console.log(req.file)返回undefined

我需要在两者之间做一个额外的步骤吗?

根据Gavin的评论,我尝试了RNFetchBlob。

RNFetchBlob.fetch(
    'POST',
    'http://localhost:3000/upload',
    {
      'Content-Type': 'multipart/form-data'
    },
    [
      {
        name: 'file',
        filename: 'vid.mov',
        data: RNFetchBlob.wrap(file)
      }
    ]
  )
    .then(res => {
      console.log(res);
    })
    .catch(err => {
      console.log(err);
    });

我的应用程序在Xcode或调试器中没有任何日志时崩溃。

0 个答案:

没有答案