2013-04-30 7 views
0

Я следую за этим tutorial и создаю приложение для обмена файлами с помощью paperclip и S3. Загрузки файлов на S3 работает отлично, но когда я нажимаю на имя загруженного файла я получаю эту ошибку:Rails и Amazon S3

OpenURI::HTTPError in AssetsController#get 

301 Moved Permanently (Invalid Location URI) 

Это мне указывая на

app/controllers/assets_controller.rb:15:in `get' 

Вот мой код:

активы .controller.rb

def get 
    asset = current_user.assets.find_by_id(params[:id]) 

    if asset 
    #Parse the URL for special characters first before downloading 
    data = open(URI.parse(URI.encode(asset.uploaded_file.url))) 

    #then again, use the "send_data" method to send the above binary "data" as file. 
    send_data data, :filename => asset.uploaded_file_file_name 

    #redirect to amazon S3 url which will let the user download the file automatically 
    #redirect_to asset.uploaded_file.url, :type => asset.uploaded_file_content_type 
    else 
    flash[:error] = "Don't be cheeky! Mind your own assets!" 
    redirect_to root_url 
    end 
end 

assets.controller.rb

attr_accessible :user_id, :uploaded_file 

    belongs_to :user 

    #set up "uploaded_file" field as attached_file (using Paperclip) 
    has_attached_file :uploaded_file, 
       :path => "assets/:id/:basename.:extension", 
       :storage => :s3, 
       :s3_credentials => ::Rails.root.join('config/amazon_s3.yml'), 
       :bucket => "Sharebox" 


validates_attachment_size :uploaded_file, :less_than => 10.megabytes  
validates_attachment_presence :uploaded_file 

def file_name 
    uploaded_file_file_name 

end 

end 

Любая помощь была бы принята с благодарностью. Благодаря!

+0

В каком регионе находится ваше ведро? Я думаю, что S3 перенаправит вас в правильную область, если вы попытаетесь подключить «через» другой регион (область по умолчанию, в которой будет использоваться ваш код: us-east-1) –

+0

Это исправило загрузку с S3-проблемы, но теперь загрузка повреждена и не может быть открыт. Я получаю следующую ошибку: Файл «Adobe-PDF-Document-icon (1) .png» не может быть открыт. t может быть поврежден или использовать формат файла, который Preview не распознает. – user2337569

ответ

0

делает то же самое, если вы попробуете через пару минут после загрузки?

Возможно, что S3 занимает некоторое время, пока файл не станет доступен

+0

Спасибо за помощь. Это было то, что области ковша не совпадали. Теперь я могу загрузить с S3, но при открытии файла я получаю сообщение об ошибке: Файл «Adobe-PDF-Document-icon (1) .png» не может быть открыт. t может быть поврежден или использовать формат файла, который Preview не распознает. – user2337569

+0

OS X Preview должен распознавать формат .png. – Tilo