【发布时间】:2017-05-13 10:44:32
【问题描述】:
我正在尝试使用 guzzlehttp 客户端上传多张图片。我有一个表格,其中有其他类型的数据('id'、'date'、'name' e.t.c..)和图像。
我想通过 Api 请求保存其他数据以及图像上传。
我可以保存其他数据,但上传图片时遇到问题。
在 API 中,我通过
访问我的图像文件$request->file('images')
但它显示为空。
我调用 API 的代码
$images = $request->file('images');
foreach ($images as $image)
{
$body[] = [
'Content-type' => 'multipart/form-data',
'name' => $image->getClientOriginalName(),
'contents' => fopen($image->getRealPath(), 'r')
];
}
$data = $request->all();
$client = new Client();
$response = $client->request('POST', $url, [
'multipart' => $body,
'json' => $data
]);
我正在处理上传图片的 API
if ($request->hasFile('images'))
{
$images = $request->file('images');
foreach ($images as $image)
{
$imageRules = [
'file' => 'mimes:png,jpeg,jpg,JPG|max:1024'
];
$imageMessages = [
'file.mimes' => 'One of the images/video is not valid. (only .png, .jpeg, .jpg, .mp4, .x-flv, .x-mpegURL, .MP2T, .3gpp, .quicktime, .x-msvideo, .x-ms-wmv are accepted)',
'file.max' => 'Image size cannot br more than 1 MB'
];
$imageValidator = Validator::make(['file' => $image], $imageRules, $imageMessages);
if ($imageValidator->fails())
{
return response()->json(['success' => false, 'error' => $imageValidator->messages()->first(), 'dashRedirectUrl' => $redirectRoute]);
}
}
$directPath = '/ticket/' . $ticket->id . '/mapping/' . $mappingId . '/images/';
foreach ($images as $image)
{
$option = ['isWatermark' => false];
$imageName = $this->uploadImageToServer($image, $directPath, $option);
$imgInsertData = [
'url' => $imageName,
'title' => $this->getImageTitle($image),
'ticket_mapping_id' => $mappingId,
'type_id' => 1,
];
TicketMappingGallery::create($imgInsertData);
}
}
注意 :: 我的函数 uploadImageToServer() 是上传图片的自定义函数。.
任何帮助将不胜感激。如果有任何不清楚的地方,请发表评论。
【问题讨论】:
-
使用刀片表单代码更新您的问题
-
你好,你能给我
uploadImageToServer()和getImageTittle()函数的代码吗?
标签: php laravel image-uploading guzzle