Использование 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
хранит только данные, отправленные с помощью формы-данных.