【问题标题】:Laravel 7 HTTP client attach multiple filesLaravel 7 HTTP客户端附加多个文件
【发布时间】:2020-09-11 14:34:54
【问题描述】:

我正在尝试将 POST 发送到需要从用户输入表单发送多个文件的休息 API。我已经设法让它与单个文件一起工作,但是当有多个文件作为数组发送时($file[]),我在 laravel 文档中看不到任何东西来说明如何做到这一点。

$response = 'API_URL';
        $response = Http::withToken(ENV('API_KEY'))
        ->attach('file', fopen($request->file, 'r'))
        ->post($url, [
           'uuid' => $request->uuid,
        ]);

【问题讨论】:

    标签: laravel guzzle


    【解决方案1】:

    你可以这样做:

    ->attach('file[0]', fopen($request->file[0], 'r'))
    ->attach('file[1]', fopen($request->file[1], 'r'))
    

    如果您的$files 是要发送的文件数组,您可以执行以下操作:

    $response = Http::withToken(ENV('API_KEY'));
    foreach($files as $k => $file)
    {
    $response = $response->attach('file['.$k.']', $file);
    }
    $response = $response->post($url, [
               'uuid' => $request->uuid,
            ]);
    

    【讨论】:

    • 谢谢我正在寻找的东西
    【解决方案2】:

    如果文件名未知,则附加多个文件,以及一个请求中的请求数据,如果请求有文件或没有文件。带有授权标头

    if ($method == 'POST') {
        // Attached multiple file with the request data
        $response = Http::withHeaders($headers);
        if($request->files) {
            foreach ($request->files as $key=> $file) {
                if ($request->hasFile($key)) {
                    // get Illuminate\Http\UploadedFile instance
                    $image = $request->file($key);
                    $fileName = $request->file($key)->getClientOriginalName();
                    $response = $response->attach($key, $image->get(),$fileName);
                }
            }
            $response = $response->post($this->$requestUrl, $request->all());
        } else {
            $response = Http::withHeaders($headers)->post($this->webApiBaseUri, $request->all());
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-06
      • 1970-01-01
      相关资源
      最近更新 更多