简体   繁体   中英

Using Response::download() to download a file from AWS S3

public function get_download($record_id)
{
    $record = Record::find($record_id);
    $file_name = $record->with_value('File Upload')->name;

    // something like https://s3.amazonaws.com/webapp/uploads/laravelsauce.png
    $file_url = read_file($record->with_value('File Upload')->value);

    return Response::download($file_url, $file_name);

    /*
    // works but why not the above
    header('Content-Type: application/octet-stream');
    header("Content-Transfer-Encoding: Binary");
    header("Content-disposition: attachment; filename='{$file_name}'");
    readfile($file_url);
    exit;
    */
}

Gives me:

Unhandled Exception

Message:

filesize() [function.filesize]: stat failed for https://s3.amazonaws.com/webapp/uploads/laravelsasuce.png

Solution: /laravel/response.php

You can't use File::size on an aws file because File::size() === filesize() and that function can't graph the S3 file for whatever reason.

在此处输入图片说明

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM