bonjour
je veux uploader une image de react native (avec expo) vers un backend symfony via axios.
Voila le code front :
const [pickedImage, setPickedImage] = useState("");
const submitPhoto = async () => {
try {
const result = await ImagePicker.launchImageLibraryAsync();
setPickedImage(result);
let formData = new FormData();
formData.append("uploaded_image", {
uri:
Platform.OS === "android"
? pickedImage.uri
: pickedImage.uri.replace("file://", ""),
name: "tata.jpeg",
type: "image/jpeg",
});
const response = await axios({
method: "post",
url: "http://192.168.1.3:8000/upload",
data: formData,
});
} catch (error) {
console.log(error)
}
};
voila le code backend :
public function postImage(Request $request)
{
//... some code
$content = $request->files->get("uploaded_image");
// ... handle the image in content
}
$content contient NULL, et je lai confirmé avec le profiler symfony
j'ai essayé d ajouter un "Content-type": "multipart/form-data" dans axios, mais j'ai le message : "Missing boundary in multipart/form-data POST data"
Est ce que quelqun sait comment uploader l image ?
Merci d avance
Bonjour, je pense que tu n'envois pas un fichier dans le FormData
mais un objet JSON
avec une propriété uri
, name
et type
côté serveur dans PHP
le contenu ne se trouve peut-être pas dans la superglobale $_FILE
mais peut-être dans $_POST
public function postImage(Request $request)
{
var_dump($_POST);
//... some code
$content = $request->get("uploaded_image");
// ... handle the image in content
}
Salut,
et bien justement je veux pouvoir envoyer un fichier et non du JSON !! Si j'ajoute d autre champs dans le FormData, je les vois bien dans l objet POST. Mais impossible de voir le fichier en question dans l objet FILE
Merci pour ta suggestion
Comme je l'ai expliqué, quand j'utilise axios avec le bon header (multipart/form-data) j'obtiens le message d'erreur
Missing boundary in multipart/form-data POST data
J'ai essayé d'utiliser fetch, et ça marche maintenant !
let response = await fetch( "http://192.168.1.3:8000/upload", { method: "post", body: formData, headers : { 'Content-Type' : 'multipart/form-data;' } } )
c est bizarre, mais je ne sais pas pourquoi ça marche maintenant !