Попытка получить URL-адрес изображения S3 внутри папки корзиныPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Попытка получить URL-адрес изображения S3 внутри папки корзины

Сообщение Anonymous »

Я пытаюсь получить правильную ссылку для использования из запроса API. Я сохранил изображение в корзине S3. Вот шаги:
  • Пользователь заполняет форму и загружает изображение.
  • Изображение загружается в корзину S3 в течение папка (скажем: images/mynewimage.png)
  • Пользователь открывает новую страницу, содержащую изображение
Проблема в том, что URL-адрес изображения, который я получаю от Laravel, отличается от URL-адреса изображения S3. само ведро.

Из ведра S3 URL-адрес выглядит следующим образом:
https://prismahrbucket.s3- ap-southeast-1.amazonaws.com/reimburses/Screen+Shot+2020-03-17+at+14.21.38.png
Но из Laravel, указанный URL-адрес неверен. Вот так:
https://prismahrbucket.s3-ap-southeast- ... .21.38.png< /p>

Пожалуйста, взгляните на мои сценарии:

Код: Выделить всё

ReimburseController.php

Код: Выделить всё

/**
* Store a newly created resource in storage.
*
* @param  \App\Http\Requests\RequestReimburse  $request
* @return \Illuminate\Http\Response
*/
public function store(RequestReimburse $request)
{
$validated = collect($request->validated())
->except(['images'])
->toArray();

if ($request->images) {
$images = json_decode($request->images);
$paths = [];

foreach ($images as $image) {
array_push($paths, $this->handleUploads($image, $validated));
}

$validated = array_add($validated, 'images', json_encode($paths));
}

$reimburse = Reimburse::create($validated);

return response()->json([
'created' => true,
'data' => $reimburse,
], 201);
}

protected function handleUploads($image, $validated)
{
$imageName = time() . str_random(10) . '.png';

Storage::disk('s3')
->put("reimburses/{$imageName}", base64_decode($image), 'public');

$path = Storage::disk('s3')->url($imageName);

return $path;
}

Код: Выделить всё

filesystem.php

Код: Выделить всё

's3' => [
'driver' => 's3',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_DEFAULT_REGION'),
'bucket' => env('AWS_BUCKET'),
'url' => env('AWS_URL'),
'visibility' => 'public' // Make s3 files public
],
Как это решить?


Подробнее здесь: https://stackoverflow.com/questions/607 ... ket-folder
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»