加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 办公文件(docx,pptx)的PaperClip上传作为zip文

发布时间:2020-12-17 01:20:58 所属栏目:百科 来源:网络整理
导读:我正在使用以下文件上传:Rails 3.2,Paperclip(3.0.4),aws-sdk(1.5.2) jQuery的文件上传 问题是办公室文件(pptx)正在下载为zip文件而不是pptx文件.这是我在日志中看到的: Started POSTProcessing by AttachmentsController#create as JS Parameters: {"file
我正在使用以下文件上传:Rails 3.2,Paperclip(3.0.4),aws-sdk(1.5.2)& jQuery的文件上传

问题是办公室文件(pptx)正在下载为zip文件而不是pptx文件.这是我在日志中看到的:

Started POST
Processing by AttachmentsController#create as JS
  Parameters: {"files"=>[#<ActionDispatch::Http::UploadedFile:0x007fa1d5bee960 @original_filename="test1.pptx",@content_type="application/vnd.openxmlformats-officedocument.presentationml.presentation",@headers="Content-Disposition: form-data; name="files[]"; filename="test1.pptx"rnContent-Type: application/vnd.openxmlformats-officedocument.presentationml.presentationrn",@tempfile=#<File:/var/folders/rm/89l_3yt93g31p22738hqydmr0000gn/T/RackMultipart20120529-10443-1ljhigq>>]}
.....


SQL (1.4ms)  INSERT INTO "attachments" ("attachment_content_type","attachment_file_name","attachment_file_size","attachment_file_title","attachment_updated_at","created_at","deleted","room_id","pinned","updated_at","user_id") VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11) RETURNING "id"  [["attachment_content_type","application/zip"],["attachment_file_name","test1_1338339249.pptx"],["attachment_file_size",150329],["attachment_file_title","test1.pptx"],["attachment_updated_at",Wed,30 May 2012 00:54:09 UTC +00:00],["created_at",["deleted",false],["room_id",20],["pinned",["updated_at",["user_id",1]]
[paperclip] Saving attachments.
[paperclip] saving /development/private/rooms/20/user_uploaded_files/test1_1338339249.pptx
Command :: file -b --mime '/var/folders/rm/89l_3yt93g31p22738hqydmr0000gn/T/RackMultipart20120529-10443-1ljhigq20120529-10443-1lr2yg2'
[AWS S3 200 1.16513 0 retries] put_object(:acl=>:private,:bucket_name=>"cdn-assets-site-com",:content_type=>"application/zip",:data=>#<Paperclip::FileAdapter:0x007fa1d2540170 @target=#<File:/var/folders/rm/89l_3yt93g31p22738hqydmr0000gn/T/RackMultipart20120529-10443-1ljhigq>,@tempfile=#<File:/var/folders/rm/89l_3yt93g31p22738hqydmr0000gn/T/RackMultipart20120529-10443-1ljhigq20120529-10443-1lr2yg2>>,:key=>"development/private/rooms/20/user_uploaded_files/test1_1338339249.pptx")

注意文件如何以pptx的形式出现,但是当上传到AWS S3时,可以将其作为zip文件?

解决方法

事实证明,正如Marc B首先暗示的那样 – x结尾的所有Office文档确实是压缩的XML文件.任何使用正常模式的东西都会认为它是一个压缩文件.

要解决这个问题,你必须要register the Office mimetypes with your server.所以,对于你的.pptx文件,你放了

Mime::Type.register "application/vnd.openxmlformats-officedocument.presentationml.presentation",:pptx

在你的config / initializers / mime_types.rb文件中.

或者,您可以使用Rack :: Mime :: MIME_TYPES.merge!()方法,如果您必须支持所有Office 2007文件,则在this Stackoverflow answer中可以看到该方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读