Я пытаюсь скачать файл, сохраненный в s3. Так что у меня есть коды, как показано ниже.
static public function download($key, $disk = 's3') : object
{
$file = FileHelper::get($key);
$local = Storage::disk('local');
$local->put(basename($key), $file);
$pathToFile = storage_path().'/app/'.basename($key);
$headers = [
'Content-Type' => \GuzzleHttp\Psr7\mimetype_from_filename(basename($key)),
'Content-Description' => 'File Transfer',
'Content-Disposition' => "attachment; filename=' ". basename($key),
'filename'=> basename($key)
];
$repsonse = response()->download($pathToFile, basename($key), $headers)->deleteFileAfterSend(true);
ob_end_clean();
return $repsonse;
}
И у меня есть код JavaScript, как показано ниже.
downloadFile() {
var app = this;
var url = baseRoute + 'files/' + this.fileId + '/download';
axios.get(url, {
headers: {
Authorization: 'bearer ' + this.Authentication.tokenData().token,
responseType : "blob"
}
}).then(function (response) {
var today = ((new Date()).toISOString()).slice(2,10),
filename = today.replace(/-/gi, "")+' '+ app.fileTitle;
let blob = new Blob([response.data], {
type: response.headers['content-type']
});
let link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = filename;
link.click();
}).catch(function (response) {
console.log(response);
});
}
Файл загружен, однако файл поврежден. (он не открывается) Я проверил S3 bucket, чтобы увидеть, не поврежден ли файл во время загрузки, но там все было в порядке.
Что я делаю не так? Любой совет или предложение будут оценены.
Заранее спасибо.
Добавлено: когда я пытался просмотреть изображение, оно возвращало белый квадрат, что означает его изображение в кодировке base64. Связано ли это с пустым файлом?