如何将一个URL地址的网络资源文件上传到服务器?首先考虑的方法是将文件下载到本地,然后进行上传操作,那有没有一个更方便的方法,将一个网络文件直接上传到服务器呢?是不是可以通过文件流的方式上传呢?

我这里使用的是 Guzzle 三方库,将一张百度上的图片上传到其他服务器。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use GuzzleHttp\Client;

try {
$file = fopen('https://t8.baidu.com/it/u=1484500186,1503043093&fm=79&app=86&size=h300&n=0&g=4n&f=jpeg', 'r');

$multipart = [
[
'name' => 'file',
'contents' => $file
]
];
$client = new Client(['verify' => false]);
$response = $client->request('POST', 'https://xx.com/upload', [
'multipart' => $multipart
]);

if ($response->getStatusCode() === 200) {
$content = $response->getBody()->getContents();
$result = json_decode($content, true);
}

} catch (\Exception $exception) {
echo $exception->getMessage();
}

return $result;