Я пытаюсь загрузить большой видеофайл в свою корзину Amazon S3 с помощью aws api.
$uploader = new MultipartUploader($s3->getDriver()->getAdapter()->getClient(), $localFullFilePath, [
'bucket' => env('S3_BUCKET'),
'key' => $s3fullFullFilePath,
]);
try {
$result = $uploader->upload();
Log::info("Upload complete");
} catch (MultipartUploadException $e) {
Log::info($e->getMessage());
}
Затем я удаляю свои загруженные видео с кодом ниже.
foreach ($oldVideos as $oneVideo) {
// $localFullFilePath = $localFilePath . $oneVideo;
unlink($localFullFilePath);
}
Мои видео загружаются успешно, но когда я пытаюсь удалить свой локальный файл, выдается сообщение об ошибке «Отказано в доступе».
Я уверен, что это не ошибка разрешения файла, потому что это происходит только при загрузке файла на S3.
Я думаю, что API не fclose
файл после прочтения.
Вы предлагаете какие-либо советы или обходные пути?
Вы дали себе разрешение в структуре карты? Это то, что случилось со мной в прошлый раз: P
Вы должны дать себе разрешение на загрузку & удалять
Вы правы, API не закрывает файл. Вы можете сделать это вручную:
// open a file
$source = fopen($localFullFilePath, 'rb');
// pass a resource, not a path
$uploader = new MultipartUploader($s3->getDriver()->getAdapter()->getClient(), $source, [
'bucket' => env('S3_BUCKET'),
'key' => $s3fullFullFilePath,
]);
// upload
try {
$result = $uploader->upload();
Log::info("Upload complete");
} catch (MultipartUploadException $e) {
Log::info($e->getMessage());
}
// close
fclose($source);
// now we can remove it