下载时更改为原始文件名?

svk*_*svk 3 php amazon-s3

我使用这个API使用amazon S3服务与PHP
https://github.com/tpyo/amazon-s3-php-class
我将URL传递给客户端像这样

https://domain.s3.amazonaws.com/bucket/filename_11052011111924.zip?AWSAccessKeyId=myaccesskey&Expires=1305311393&Signature=mysignature
Run Code Online (Sandbox Code Playgroud)

因此,当客户端点击或粘贴URL到浏览器时,下载的文件名为filename_11052011111924.zip.But我将原始文件名存储在DB中.

因此,当将URL单独传递给客户端并使用原始文件名下载时,可以下载.我不确定这是否对我有帮助.

Content-Disposition: attachment; filename=FILENAME.EXT
Content-Type: application/octet-stream
Run Code Online (Sandbox Code Playgroud)

Geo*_*ord 6

如果在将文件上传到S3时设置文件中列出的标题,可以使用原始文件名下载文件.(您也可以在S3中的现有文件上设置这些文件 - 请参阅AWS文档)

我不确定您的库是否支持此功能,但您可以使用AWS S3 SDK执行此操作.

像(我不知道php所以检查语法):

// Instantiate the class
$s3 = new AmazonS3();

$response = $s3->create_object('bucket', 'filename_11052011111924.zip', array(
    'fileUpload' => 'filename.zip',
    'contentType' => 'application/octet-stream',
    'headers' => array( // raw headers
        'Content-Disposition' => 'attachment; filename=filename.zip',
    ),
));
Run Code Online (Sandbox Code Playgroud)

更新

您还可以在每次生成新网址时调整某些标头.请参阅http://docs.amazonwebservices.com/AWSSDKforPHP/latest/#m=AmazonS3/get_object_url

$url = $s3->get_object_url('bucket', 'filename_11052011111924.zip', '5 minutes', array(
    'response' => array(
          'Content-Disposition' => 'attachment; filename=filename.zip'
    )
));
Run Code Online (Sandbox Code Playgroud)