如何将contentType信息从Burzum / FileStorage传递到KnpLabs / Gaufrette

时间:2018-08-17 13:26:14

标签: php cakephp amazon-s3 cakephp-3.0

使用ControllerAdviceBean插件(使用Burzum/FileStorage)的CakePHP 3.4应用程序来管理到AWS S3的上传。不幸的是,我遇到了MS Office文件(docx,xl​​sx等)被检测为ZIP文件的问题。

我将代码更改为首先使用finfo,如果它检测到zip,请查看扩展名以查看它是否是Office文件。现在,我可以通过执行patchEntity将此正确的模仿类型传递给file_storage表。到目前为止一切顺利。

但是,FileStorage插件调用KnpLabs / Gaufrette实际将文件发送到S3,但似乎并没有沿mimetype / contenttype发送。因此,Gaufrette然后在KnpLabs/Gaufrette中进行了自己的小的finfo技巧,将元数据字段'Content-Type:application / zip'写入S3上的项目,导致Office文件被下载为zip文件...

在AwsS3适配器的选项中是否可以设置正确的内容类型?

谢谢!

1 个答案:

答案 0 :(得分:0)

在这里提到了答案:DOCS

可以使用以下代码访问适配器和设置,例如“内容类型”:

# Dockerfile
FROM ruby:2.5

RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs

RUN groupadd -r -g 1000 appuser
RUN useradd -r -m -u 1000 -g appuser appuser
USER appuser

RUN mkdir /home/appuser/myapp

WORKDIR /home/appuser/myapp

COPY Gemfile Gemfile.lock ./

RUN bundle install

COPY . ./

感谢burzum指出这一点!