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

如何通过laravel api路由上传文件,laravel,vue.js,axios,Laravel,Vue.js,Axios,我正在创建一个api来上传文件。当我通过web routes文件上传它们时,它工作,但当我通过api routes文件上传它们时,它不工作 axios.defaults.headers.put['Content-Type'] = 'multipart/form-data'; axios.put('/api/pikirler', formData); 如果我将其更改为: axios.defaults.headers.post['Content-Type'] = 'multipart/form-d

我正在创建一个api来上传文件。当我通过web routes文件上传它们时,它工作,但当我通过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路由中使用它。

您可以在控制器中使用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);
以下是文档。
您可以在控制器中使用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);
以下是文档。

我不能通过更改标题来上传axios吗?我没有尝试axios@阿扎塔克迈拉多夫。我通常用guzzle。谢谢,我会试试的。但是,如果我能了解如何使用axiosOP进行发布,那就太好了。axiosOP指的是使用axios(javascript)从客户端发布。这个答案是关于使用PHP从服务器端使用guzzle。完全不相干。我相信API路由只需要json数据。您想将其更改为接受多部分/表单数据,这可能会在laravel的某个地方更改,我还没有找到位置。或者只是从axios使用JSON而不是表单数据。我不能通过更改标题将其与axios一起上载吗?我没有尝试axios@阿扎塔克迈拉多夫。我通常用guzzle。谢谢,我会试试的。但是,如果我能了解如何使用axiosOP进行发布,那就太好了。axiosOP指的是使用axios(javascript)从客户端发布。这个答案是关于使用PHP从服务器端使用guzzle。完全不相干。我相信API路由只需要json数据。您想将其更改为接受多部分/表单数据,这可能会在laravel的某个地方更改,我还没有找到位置。或者只使用axios中的JSON而不是表单数据