gpt4 book ai didi

ruby-on-rails - Amazon S3 只接受标题中没有空格、没有数字的文件?

转载 作者:行者123 更新时间:2023-12-01 13:03:26 27 4
gpt4 key购买 nike

这是一个奇怪的问题,但仅与我所看到的奇怪行为相称。我的应用程序是 Rails 3/Paperclip/S3。

症状:

  • 无论标题如何,所有图片都在上传。
  • 上传 .pdf 或 .doc 时,如果标题没有空格,如 my_doc.pdf,则上传正常。
  • 上传带有空格的 .pdf 或 .doc 时,例如 My Doc.pdf,失败,错误是 broken pipe 或文件无法自动上传到 S3。
  • 上传带有数字的.pdf或.doc时,如mydoc20.pdf,同样失败。

我想这个问题有两种可能的解决方案。

  1. 直接修复broken pipe错误(首选方法)。
  2. 在将每个上传的文件保存到 S3 之前自动重命名以删除空格和数字 - 虽然不从源头修复它,但我想这会缓解这个问题。

如果您能帮助我修复 1 和/或 2,我将不胜感激。


代码

# Upload.rb model
class Upload < ActiveRecord::Base
has_attached_file :document,
:storage => :s3,
:s3_credentials => "#{::Rails.root.to_s}/config/s3.yml",
:path => "/docs/:style/:id/:basename.:extension"
has_attached_file :photo,
:styles => {:medium => "200x300>", :thumb => "100x150>" },
:storage => :s3,
:s3_credentials => "#{::Rails.root.to_s}/config/s3.yml",
:path => "/photos/:style/:id/:basename.:extension"

# s3.yml
development:
bucket: dev_bucket_name
access_key_id: dev_acc_key
secret_access_key: dev_sec_key
production:
bucket: my_production_bucket
access_key_id: my_access_key_id
secret_access_key: my_secret_key

# environment.rb is empty with regard to uploading.

# uploads_controller.rb
def edit
@candidate = Candidate.find(current_user.user_type_id)
render :layout => 'forms'
end

def update
@candidate = Candidate.find(params[:id])
if @candidate.update_attributes(params[:candidate])
flash[:notice] = "Profile updated successfully."
redirect_to :action => "show", :id => params[:id]
else
flash[:notice] = "There was an error updating your profile."
render :action => "edit", :id => params[:id]
end
end

我不认为涉及任何方法。我几乎希望我的方法有明显的错误,因为这意味着它会得到修复 :)。

最佳答案

对于第二部分,应该这样做:

@s = "Really Important!*() Document version#123123.newest.pdf"
@s.gsub!(' ','_').downcase! #this will make everything lowercase and replace all spaces with underscores
@s.gsub!(/[^a-zA-Z._]+/,'') #this will remove all numbers and special characters except . and _
puts @s #prints "really_important_document_version.newest.pdf"

编辑:在对回形针进行更多研究后,我发现了以下内容:http://blog.wyeworks.com/2009/7/13/paperclip-file-rename

检查该链接,我相信这就是您要找的。

编辑 2: 在我最初阅读您的帖子时,我也错过了关于提取数字的部分,我已经修改了正则表达式代码来解决这个问题。

关于ruby-on-rails - Amazon S3 只接受标题中没有空格、没有数字的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4419497/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com