我让用户将文件上传到我的服务器,通常是大型HTML(4-8 MB)文件。然后,服务器将其推送到S3并将文件提供给用户。我需要的是在将文件推送到S3之前压缩文件并将压缩文件提供给用户。我怎样才能做到这一点?我有APACHE,PHP在后端运行。
答案 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)
您在其他答案中有一个示例如何压缩到gzip
可以通过aws控制台复制到s3:
aws s3 cp /path/test.gz s3:// your_bucket / path /
您需要将密钥/付费凭证放入〜/ .aws / config文件
我相信您需要将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