【问题标题】:Unhandled promise rejection: TypeError: Network request failed in react native未处理的承诺拒绝:TypeError:网络请求在本机反应中失败
【发布时间】:2021-05-28 19:21:43
【问题描述】:

我是原生反应的新手。我已经创建了一个表格。从这个表单我将图像上传到服务器。但问题不是单个数据上传到服务器。所以问题是我的代码是错误的或者请帮忙。我没有收到任何具体错误。请帮忙。谢谢。我的其他表单正在正确提交,他们没有任何要上传的图像,但这个表单唯一的问题是因为这里是要上传的图像

这是我的代码

export default function Add(props) {

  const { navigation } = props

  const [singleFilePAN, setSingleFilePAN] = useState('');
  const [singleFileADH, setSingleFileADH] = useState('');
  const [singleFileADH1, setSingleFileADH1] = useState('');
  const [singleFileSIGN, setSingleFileSIGN] = useState('');
  const [imageArray, setImageArray] = useState({
    PAN: null,
    GST: null,
    ADH: null,
    ADH1: null,
  });

 const validateInputs = () => {

    console.log(singleFilePAN)
    console.log(singleFileADH)
    console.log(singleFileADH1)
    console.log(singleFileSIGN)
    
    if (singleFilePAN && singleFileADH && singleFileADH1 && singleFileSIGN != null) 
    {
    if (!/[A-Z]{5}[0-9]{4}[A-Z]{1}/.test(PAN) && imageArray.GST === null){
      setPanError('Please Insert valid PAN Card Image \n And Valid Pan card number')
      return;
    }
    if (!/^[0-9]{2}[A-Z]{5}[0-9]{4}[A-Z]{1}[1-9A-Z]{1}Z[0-9A-Z]{1}$/.test(GST))  {
      setGstError('Please Insert valid GST Number')
      return;
    }
    if (!/^\d{4}\s\d{4}\s\d{4}$/.test(ADH)) { 
      setAdhError('Please Insert valid Aadhar Card Image \n And Valid Adhar card number')
      return;
    }
    else 
    {

        //+++++++++++++++++++++++++++++++++=submitting form data to api start+++++++++++++++++++++++++++++++++++
{

  const leadTagNumber = props.route.params.leadTagNumber

    AsyncStorage.multiGet(["application_id", "created_by",'leadTagNumber']).then(response => {

  const formData = new FormData();


formData.append('lead_tag_number',leadTagNumber);
formData.append('pan_card_number', PAN);
formData.append('gstin_number', GST);
formData.append('aadhar_card_number', ADH);
formData.append('idfy_pan_card_status', "Done");
formData.append('idfy_aadhar_card_status',"Done");
formData.append('entry_sorce', "App");
formData.append('created_by', response[1][1]);
formData.append('application_id', response[0][1]);
formData.append('is_active', "Y");
formData.append('is_deleted', "N");
formData.append('created_time', "");

formData.append('upload_pancard', 
  {
    uri: singleFilePAN,
    name: 'pancardImage.jpg',
    type: 'image/jpg/png'
  }
);
formData.append('upload_aadhar', 
    {
        uri: singleFileADH,
        name: 'upload_aadhar.jpg',
        type: 'image/jpg/png'
    }
);
formData.append('upload_aadhar_second', 
    {
        uri: singleFileADH1,
        name: 'upload_aadhar_second.jpg',
        type: 'image/jpg/png'
    }
);
formData.append('digital_signature', 
    {
        uri: singleFileSIGN,
        name: 'digital_signature.jpg',
        type: 'image/jpg/png'
    }
);

  fetch('https://nasdigital.tech/Android_API_CI/upload_multipart_data', {
      method: 'POST',
      headers: {'Accept': 'application/json, text/plain, */*', "Content-Type": "application/json" },

      body: formData

    })
    .then((returnValue) => returnValue.json())
    .then(function(response) {
      console.log(response)
      Alert.alert("File uploaded");
      return response.json();
      
     
    });
  });
  // event.preventDefault();
  }
  //+++++++++++++++++++++++++++++++++submitting form data to api end++++++++++++++++++++++++++++++++++++++

      Alert.alert("success")
      return;
}
    }
  };

 const takePicture = async (type) => {
    if (camera) {

      const data = await camera.takePictureAsync({
        mediaTypes: ImagePicker.MediaTypeOptions.All,
      });

      console.log(data.uri);
      const newImageArr = imageArray;
      if (imageType === 'PAN') {
        newImageArr.PAN = data.uri;
      }else if (imageType === 'ADH' && evenTry) {
        newImageArr.ADH = data.uri;
        setEvenTry((val) => !val);
      } else if (imageType === 'ADH' && !evenTry) {
        newImageArr.ADH1 = data.uri;
        setEvenTry((val) => !val);
      }
      setImageArray({...newImageArr});
      
      setShowCamera(false);
      setImageType('');
      setSingleFilePAN({ singleFilePAN: newImageArr.PAN});
      setSingleFileADH({ singleFileADH: newImageArr.ADH});
      setSingleFileADH1({ singleFileADH1: newImageArr.ADH1});
    }
  };


  const pickImage = async (type) => {
    let result = await ImagePicker.launchImageLibraryAsync({
      mediaTypes: ImagePicker.MediaTypeOptions.All,
    });

    console.log(result.uri);
    if (!result.cancelled) {
      const newImageArr = imageArray;
      if (type === 'PAN') {
        newImageArr.PAN = result.uri;
      } else if (type === 'ADH' && evenTry) {
        newImageArr.ADH = result.uri;
        setEvenTry((val) => !val);
      } else if (type === 'ADH' && !evenTry) {
        newImageArr.ADH1 = result.uri;
        setEvenTry((val) => !val);
      }
      setImageArray({ ...newImageArr });
     setSingleFilePAN({ singleFilePAN: newImageArr.PAN});
     setSingleFileADH({ singleFileADH: newImageArr.ADH});
     setSingleFileADH1({ singleFileADH1: newImageArr.ADH1});
    }

请忽略这个 = 我是新来的反应原生的。我已经创建了一个表格。从这个表单我将图像上传到服务器。但问题不是单个数据上传到服务器。所以问题是我的代码是错误的或者请帮忙。我没有收到任何具体错误。请帮忙。谢谢

【问题讨论】:

  • 您将 Content-Type 设置为 application/json 但您可能尝试发送 multipart/form-data。见这里-stackoverflow.com/questions/35192841/…
  • Form multipart 你也可以在这里看到一些东西 -muffinman.io/blog/… 可能会有帮助
  • 不能通过添加内容类型来工作 - 多部分请帮助我应该在我的代码中更改什么
  • 您是否尝试过首先使用 Postman 向该 API 发布内容?
  • 如果您无法从 Postman 发帖 - 服务器端可能存在问题,您确定这还能正常工作吗?您需要首先了解服务器期望文件的格式,并使用 Postman 进行尝试,一旦成功 - 您可以将相同的内容应用于代码。

标签: react-native multipartform-data multipart


【解决方案1】:

我认为您通过图像传递的表单数据类型错误,如果您不传递要发送的数据类型,BE 可能不会得到它

而不是

{
    uri: singleFilePAN,
    name: 'pancardImage.jpg', <- don't add extenstion
    type: 'image/jpg/png' <- bad type 
}
{
    uri: singleFilePAN,
    name: 'pancardImage', 
    type: 'image/jpg' 
}

在此处查看所有 mime 类型 -> MIME DOCS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-25
    • 2021-04-12
    • 2020-07-12
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 2020-09-13
    • 2020-06-30
    相关资源
    最近更新 更多