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

Php 下载时是否更改为原始文件名?,php,amazon-s3,Php,Amazon S3,通过使用此API,我将amazon S3服务与PHP结合使用 我正在像这样将url传递给客户端 https://domain.s3.amazonaws.com/bucket/filename_11052011111924.zip?AWSAccessKeyId=myaccesskey&Expires=1305311393&Signature=mysignature 因此,当客户端单击或将URL粘贴到浏览器中时,文件名为_110520111124.zip的文件将被下载,但我将原始

通过使用此API,我将amazon S3服务与PHP结合使用

我正在像这样将url传递给客户端

https://domain.s3.amazonaws.com/bucket/filename_11052011111924.zip?AWSAccessKeyId=myaccesskey&Expires=1305311393&Signature=mysignature
因此,当客户端单击或将URL粘贴到浏览器中时,文件名为_110520111124.zip的文件将被下载,但我将原始文件名存储在DB中

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

Content-Disposition: attachment; filename=FILENAME.EXT
Content-Type: application/octet-stream

我认为那不管用(尽管我从未试过)。您可能需要先将文件下载到服务器,然后使用头文件,完成后(或稍后使用一些bot或cron)可以删除文件


此方法将使用您的带宽。

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

我不确定您的库是否支持此功能,但您可以使用

类似(我不懂php,所以请检查语法):

更新

您还可以在每次生成新url时调整某些标题。看


是的,您可以告诉AWS输出文件必须如何命名:

注意:我们编码文件名


这个问题的副本,请参阅以获取答案。这是不正确的。您可以使用原始问题中的标题设置“下载文件名”。“看我的回答,”杰夫;谢谢你提供的信息。正如我在评论中所写的那样,我从未尝试过,当然他们的类/API可以像您的回答那样带来解决方案。现在我们怎么联系他?他接受了我的答案作为解决办法,尽管有办法做到这一点。
// 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',
    ),
));
$url = $s3->get_object_url('bucket', 'filename_11052011111924.zip', '5 minutes', array(
    'response' => array(
          'Content-Disposition' => 'attachment; filename=filename.zip'
    )
));
$filename = "Here we can have some utf8 chars.ext";
$outputFileName = '=?UTF-8?B?' . base64_encode($filename) . '?=';
$url = $s3->get_object_url(
   'bucket_name', 
   'path_to_the_file.ext', 
   '5 minutes', 
   array(
      'response' => array(
          'content-disposition' => 'attachment;' . " filename=\"" . $outputFileName . "\";")
      )
   )
);