-1

我正在使用此代码上传用户的个人资料图片

if params[:user][:image].present?
  uploaded_io = params[:user][:image]
  name = "image_" << @user.username << uploaded_io.original_filename
  File.open(Rails.root.join('public', 'images','profile',name ), 'w') do |file|
    file.write(uploaded_io.read)
  end
end  

但是当我运行它时它给出了这个错误cannot convert ascii-8bit to utf-8bit 所以我所做的是我改变了我在这样的文件application.rb中的默认编码。它开始正常工作。config.encoding = "ascii-8bit"config.encoding = "utf-8"

但问题是现在我正在向用户发送一封邮件,以便从简单的 Rails 邮件程序成功注册,现在在发送邮件之前它给了我这个错误cannot convert utf-8bit to ascii-8bit

现在我完全震惊了,一次只有其中一个作品。我已经尝试了很多建议的解决方案,enforce_encoding on strings但它们似乎都不起作用。任何帮助,将不胜感激。谢谢。

4

1 回答 1

1

将“w”更改为“wb”

if params[:user][:image].present?
  uploaded_io = params[:user][:image]
  name = "image_" << @user.username << uploaded_io.original_filename
  File.open(Rails.root.join('public', 'images','profile',name ), 'wb') do |file|
    file.write(uploaded_io.read)
  end
end  
于 2013-08-14T06:49:36.020 回答