Php 压缩并上传到AWS S3

Php 压缩并上传到AWS S3,php,amazon-web-services,amazon-s3,compression,gzip,Php,Amazon Web Services,Amazon S3,Compression,Gzip,我有用户上传文件到我的服务器通常是大型HTML(4-8MB)文件。服务器然后将其推送到S3并将文件提供给用户。我需要的是在将文件推送到S3之前对其进行压缩,并将压缩后的文件提供给用户。我怎样才能做到这一点?我的后端运行APACHE和PHP。您可以使用PHP压缩文件,并将压缩文件推送到S3 // Name of the file to compress $file = "yourfile.txt"; // Name of compressed gz file $gzfile = "test.g

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

您可以使用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);

您可以使用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);
  • 在另一个答案中有一个例子,就是如何压缩到gzip

  • 可以通过aws控制台复制到s3,如下所示:

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

  • 您需要将密钥/付费凭据放入~/.aws/config文件

  • 下面是如何使用Apache提供gzip内容的一些答案
  • 我相信您需要将s3fs-fuse()文件系统集成到web服务器上才能读取Gzip内容

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

    更新:关于s3fs问题以及如何使用aws s3上传api的更多详细信息,您可以在我这里看到其他答案

  • 在另一个答案中有一个例子,就是如何压缩到gzip

  • 可以通过aws控制台复制到s3,如下所示:

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

  • 您需要将密钥/付费凭据放入~/.aws/config文件

  • 下面是如何使用Apache提供gzip内容的一些答案
  • 我相信您需要将s3fs-fuse()文件系统集成到web服务器上才能读取Gzip内容

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


    更新:关于s3fs问题以及如何使用aws s3上载api的更多详细信息,您可以在我这里看到其他答案

    并将.gz文件推送到s3?是的,假设可以使用.gz文件为您的用户提供服务器。我们如何将.gz文件提供给用户浏览器并解压缩?回到html?添加标题内容类型会有帮助吗?您需要将内容类型设置为application/x-gzip。请注意,您不能在S3中上载gz文件,然后将其解压缩。如何添加流上下文来设置元数据,如内容类型?php的fopen函数有第四个参数$context,但gzopen没有?然后将.gz文件推送到S3?是的,假设可以使用.gz文件为您的用户提供服务器,我们如何将.gz文件提供给用户浏览器并对其进行解压缩?回到html?添加标题内容类型会有帮助吗?您需要将内容类型设置为application/x-gzip。请注意,您不能在S3中上载gz文件,然后将其解压缩。如何添加流上下文来设置元数据,如内容类型?php的fopen函数有第四个参数$context,但gzopen没有?