web-dev-qa-db-fra.com

Laravel API de téléchargement de fichiers à l'aide de Postman

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:

enter image description here

Corps:

enter image description here

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.

enter image description here

Des idées?

7
Starfish

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.

6
Starfish