2016-09-08 2 views
1

Я tring загружаю большой видеофайл в мой ковш Amazon S3 с aws api.Laravel/Aws - Не удалять файл после загрузки s3-ведра с помощью MultipartUploader

$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 файл после чтения.

Вы предлагаете какие-либо советы или обходные пути?

ответ

0

Вы дали себе разрешение в структуре карты? Это также то, что случилось со мной в последний раз: P

Вы должны дать себе разрешение на загрузку & Удалить

+0

Когда я комментирую метод загрузки в нижнем коде, файл удаляется успешно. Вот почему я уверен, это не ошибка разрешения, связанная с ОС – Abdullah

0

Вы правы, апи не закрывает файл. Вы можете сделать это вручную:

// 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 
Смежные вопросы