J'ai le code suivant dans mon contrôleur:
public function upload(Request $request)
{
$files = $request->file('uploads');
if(!empty($files)) {
foreach($files as $file) {
Storage::put($file-getClientOriginalName(),file_get_contents($file));
}
}
Qui est appelé via un api.php
dans routes
:
Route::post('/upload', [ 'uses' => 'UploadController@upload' ]);
J'utilise postman pour tester mon application.
En-tête:
Corps:
Brut:
POST/scotic/public/api/upload HTTP/1.1 Host: 127.0.0.1:80 Content-Type: multipart/form-data; limite = ---- WebKitFormBoundary7MA4YWxkTrZu0gW Cache-Control: no-cache Postman-Token: 0caf7349-5c91-e5f1-766f-72a3f1e33900
------ WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: formulaire-données; name = "uploads []"; filename = "banana.png" Content-Type: image/png png data va ici .. ------ WebKitFormBoundary7MA4YWxkTrZu0gW--
Le $files
est vide lors du téléchargement du fichier. Qu'est-ce que je fais mal?
Après un peu de fouille, j'ai fait travailler mon uploader sans facteur, j'ai remarqué que le '--boundary' manquait dans le Content-Type
en facteur. Le LHS fonctionne, RHS (facteur) ne fonctionne pas.
Des idées?
Le problème était que je spécifiais explicitement le Content-Type
en facteur.
Selon l'une des réponses de cette post :
Il n'est pas nécessaire d'ajouter manuellement un en-tête de type de contenu. Vous remplacez la valeur définie par Postman. Sélectionnez simplement form-data dans la demande POST et envoyez votre demande pour voir si cela fonctionne.