未处理的承诺拒绝:TypeError:网络请求在本机反应中失败

时间:2021-02-26 11:50:43

标签: react-native multipartform-data multipart

我是本机反应的新手。我已经制作了一个表格。从此表单中,我将图像上传到服务器。但问题不是单个数据上传到服务器。那么问题是我的代码是错误的还是请帮助。我没有收到任何特定错误。请帮忙。谢谢。并且我的其他表格正在正确提交他们没有任何图片要上传但这个表格唯一的问题是因为这里是要上传的图片

这是我的代码

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});
    }

请忽略这一点 = 我是本机反应的新手。我已经制作了一个表格。从此表单中,我将图像上传到服务器。但问题不是单个数据上传到服务器。那么问题是我的代码是错误的还是请帮助。我没有收到任何特定错误。请帮忙。谢谢

1 个答案:

答案 0 :(得分: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