是否可以在同一请求中发送数据和文件?

时间:2018-01-09 16:43:50

标签: javascript reactjs react-native fetch

我有一个接收上传APP文件和图片的API

要从APP发送到API,我使用获取

const data = new FormData();
let i = 0;

export const dataPush = (fileUri, fileType, fileName) => {

  data.append('file'+i, {
    uri: fileUri,
    type: fileType, 
    name: fileName
  });

  i++;
};

export const uploadFiles = () => {

  console.log(data);

  fetch('http://192.168.0.23/apiapp/public/api/annex', {
    method: 'post',
    body: data
  }).then(res => {
    console.log(res)
  });

}

但我想发送从表单

获得的相同请求数据

但我找不到办法,总是或只是发送数据,或只是发送文件

是否可以在同一个请求中发送所有内容?如果可能的话,怎么样?

2 个答案:

答案 0 :(得分:1)

您只需将不需要的任何数据附加到FormData对象中即可。

data.append("not_a_file", "This is a string");

答案 1 :(得分:0)

我是根据昆汀的回应做到的,并且有效

const formData = new FormData();
const i = 0;

export const filePush = (fileUri, fileType, fileName) => {

  formData.append('file'+i, {
    uri: fileUri,
    type: fileType, 
    name: fileName
  });

  i++;
};

export const dataPush = (name, content) => {

  formData.append(name, content);

};

export const uploadFiles = () => {

  fetch('http://192.168.0.23/apiapp/public/api/annex', {
    method: 'post',
    body: formData
  }).then(res => {
    console.log(res._bodyText)
  }).catch(error => { 
    console.log(error.message)
  });

}