Это странный вопрос, но только соразмерный странному поведению, которое я вижу. Мое приложение - Rails 3 / Paperclip / S3.
Симптомы:
- Все изображения загружаются независимо от их названия.
- При загрузке .pdf или .doc, если в заголовке нет пробелов, таких как my_doc.pdf, он загружается нормально.
- При загрузке .pdf или .doc с пробелами, такими как My Doc.pdf, происходит сбой либо с ошибкой
broken pipe
, либо из-за того, что файл молча не удается загрузить на S3.
- При загрузке .pdf или .doc с номерами, такими как mydoc20.pdf, он также завершается с ошибкой, как указано выше.
Я полагаю, есть два возможных решения этой проблемы.
- Исправьте ошибку
broken pipe
напрямую (предпочтительный метод).
- Автоматически переименовывает каждый загруженный файл, чтобы удалить пробелы и цифры, прежде чем он будет сохранен в 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
Я не верю, что существуют какие-либо методы. Я почти надеюсь, что с моим подходом что-то явно не так, потому что это значит, что он будет исправлен:).