压缩并上传到AWS S3

时间:2015-04-17 18:42:10

标签: php amazon-web-services amazon-s3 compression gzip

我让用户将文件上传到我的服务器,通常是大型HTML(4-8 MB)文件。然后,服务器将其推送到S3并将文件提供给用户。我需要的是在将文件推送到S3之前压缩文件并将压缩文件提供给用户。我怎样才能做到这一点?我有APACHE,PHP在后端运行。

2 个答案:

答案 0 :(得分:2)

您可以使用PHP压缩文件并将压缩文件推送到S3。

// Name of the file to compress
$file = "yourfile.txt";

// Name of compressed gz file 
$gzfile = "test.gz";

// Open the gz file (w9 is the highest compression)
$fp = gzopen ($gzfile, 'w9');

// Compress the file
gzwrite ($fp, file_get_contents($file));

//close the file after compression is done
gzclose($fp);

答案 1 :(得分:2)

  1. 您在其他答案中有一个示例如何压缩到gzip

  2. 可以通过aws控制台复制到s3:

    aws s3 cp /path/test.gz s3:// your_bucket / path /

  3. 您需要将密钥/付费凭证放入〜/ .aws / config文件

    1. 以下是如何使用Apache apache .gz gzip content handler for Linux documentation /usr/share/doc and localhost/doc/
    2. 提供gzip压缩内容的一些答案

      我相信您需要将s3fs-fuse(https://code.google.com/p/s3fs/)文件系统集成到您的Web服务器以读取gzip压缩内容

      另外我对s3fs有一些经验,不建议你尝试从服务器直接写入已安装的s3fs文件系统,它会带来麻烦和系统崩溃。最好的方法是通过aws控制台复制内容,但使用挂载的文件系统进行只读访问

      更新:有关s3fs问题以及如何使用aws s3上传API的更多详细信息,您可以在此处看到其他答案How could I store uploaded images to AWS S3 on PHP