如何通过laravel api路由上传文件

时间:2017-07-06 10:51:06

标签: laravel vue.js axios

我正在创建一个api来上传文件。当我通过web路由文件上传它们时它可以工作,但是当我通过api routes文件上传它们时它不起作用。

axios.defaults.headers.put['Content-Type'] = 'multipart/form-data';
axios.put('/api/pikirler', formData);

如果我将其更改为:

axios.defaults.headers.post['Content-Type'] = 'multipart/form-data';
axios.post('/upload', formData);

工作正常。但我想在api路线中使用它。

1 个答案:

答案 0 :(得分:3)

您可以在控制器中使用guzzle包。以下是用guzzle上传文件的代码。

$options = [
      'multipart' => [
        [
          'name' => 'user_key'
        ],
        [
          'name' => 'file_names',
          'contents' => '[]'
        ],
        [
          'name' => 'file',
          'contents' => file_get_contents($filePath),
          'filename' => $fileName,
          'headers'  => [
            'Content-Type' => 'application/octet-stream'
          ]
        ]
      ]
    ];

      $httpClient = new GuzzleClient();
      $response   = $httpClient->request("POST", "someApiUrl", $options);

以下是文档。 http://docs.guzzlephp.org/en/latest/overview.html