客户端

用了 expo 的ImagePicker

import { ImagePicker } from 'expo';

... 

let result = await ImagePicker.launchImageLibraryAsync({
  allowsEditing: true,
  aspect: [4, 3],
});
let form = new FormData();
form.append('files', {
  uri: result.uri,
  type: 'multipart/form-data', 
  name: 'image.png'
});
fetch('http://192.168.1.121:7000/api/v1/file/upload', {
  method: 'POST',
  headers: {
    'Content-Type': 'multipart/form'
  },
  body: form
}).then((res) => {return res.json()}).then((res) => {
  alert(JSON.stringify(res))
}).catch((e) => {
  alert(e)
})

注意:文件体格式不能改变,必须是uri、type、name

服务端

这里用老牌的formidable做示例,便于理解

let formidable = require('formidable');

exports.upload = function(req, res) {
  var form = new formidable.IncomingForm();
  form.uploadDir = "./uploaded"; // 根据实际需要修改
  form.parse(req, (err, fields, files) => {
    console.log(err, fields, files)
  })
}