Использование FormData для отправки сообщений из react-native в django не работает

Я создаю свое первое приложение на react-native с бэкендом django. чтобы мое приложение работало правильно, мне нужно отправить изображение из react-native в django с помощью FormData. Я пытаюсь заставить пользователя выбрать изображение из своей библиотеки, а затем, когда он закончит, отправить его в django и сохранить в модели. вот мой код-

react-native

onst [ profileImage, setProfileImage ] = useState(null)
const sendI = async (image) => {
  
    const formData = new FormData()
    let image_data = {
      uri : image.uri,
      name : image.fileName,
      type : image.type,
    }
    if (image != null){
    
      await formData.append( 'image', image_data, image.fileName)
      await formData.append('name', usern)
      //await formData.append('name', 'a' )
      console.log(formData)
      setSentI(formData)
      console.log('recieved')
    }

    
    console.log(image.fileName)
    
  }

  


  const showImagePicker = async () => {
    
    // Ask the user for the permission to access the media library 
    const permissionResult = await ImagePicker.requestMediaLibraryPermissionsAsync();

    if (permissionResult.granted === false) {
      alert("You've refused to allow this appp to access your photos!");
      return;
    }
    
    let result = await ImagePicker.launchImageLibraryAsync({
      mediaTypes: ImagePicker.MediaTypeOptions.All,
      allowsEditing: true,
      aspect: [4, 3],
      quality: 1,
    });

    // Explore the result
    console.log(result);

    if (!result.cancelled) {
      await setProfileImage(result);
      console.log(result.uri);
      sendI(result);
      
    }
  }

  const openCamera = async () => {
    // Ask the user for the permission to access the camera
    const permissionResult = await ImagePicker.requestCameraPermissionsAsync();

    if (permissionResult.granted === false) {
      alert("You've refused to allow this appp to access your camera!");
      return;
    }

    const result = await ImagePicker.launchCameraAsync();

    // Explore the result
    console.log(result);

    if (!result.cancelled) {
      setProfileImage(result);
      console.log(result);
    }
  }


  const image = () => {
    

    console.log(sentI)
    fetch(`http://192.168.5.172:8000/home/imagetest/`, {
      method: 'POST',
      headers: {
        'Content-Type': 'multipart/form-data',

         },
      body: sentI, 
  })
  .then( res => res.json())
  .then( res => {
    console.log(res)

  })
  .catch( error => console.log(error))

}

django

@csrf_exempt
def imagetest(request):
    if request.method == "POST":
        print(request.POST)
        image = request.POST.get('image', False)
        user = request.POST.get('name', False)
        print(image)
        print(user)
        

Когда я пробую это, сервер Django печатает пользователя, но ничего не получает для изображения. Я пытаюсь найти проблему и исправить ее уже несколько недель и все еще не понимаю, почему это происходит?

вы можете найти загруженное изображение в request.body или request.data, потому что request.POST хранит только данные, отправленные с помощью формы-данных.

Пройдите по этой ссылке, чтобы лучше понять эту часть!

Вернуться на верх