【发布时间】:2011-06-08 11:45:07
【问题描述】:
我使用 rails 3 和 paperclip 插件来附加文件。
我有两个模型:
- 订单;
- 订单附件:
- belongs_to :order;
- has_attached_file :doc;
我尝试通过回形针将文件附加到订单中;
当我使用英文或数字文件名附加文件时,一切都很好:
SQL (0.0ms) INSERT INTO "order_attachments" ("order_id", "created_at", "updated_at", "doc_file_name", "doc_content_type", "doc_file_size", "doc_updated_at") VALUES (1, '2011-06-08 11:07:22.108523', '2011-06-08 11:07:22.108523', 'Example.txt', 'text/plain', 22, '2011-06-08 11:07:22.105523') RETURNING "id"
[paperclip] Saving attachments.
[paperclip] saving D:/my_project_path/public/system/docs/93/original/Example.txt
SQL (1.0ms) COMMIT
Completed 200 OK in 229ms (Views: 21.0ms | ActiveRecord: 7.0ms)
但是当我附加带有俄罗斯文件名的文件时,发生错误:
SQL (1.0ms) INSERT INTO "order_attachments" ("order_id", "created_at", "updated_at", "doc_file_name", "doc_content_type", "doc_file_size", "doc_updated_at") VALUES (1, '2011-06-08 11:26:43.040925', '2011-06-08 11:26:43.040925', 'Пример.txt', 'text/plain', 26, '2011-06-08 11:26:43.035924') RETURNING "id"
[paperclip] Saving attachments.
[paperclip] saving D:/my_project_path/public/system/docs/94/original/Пример.txt
SQL (0.0ms) ROLLBACK
Completed in 161ms
Errno::ENOENT (No such file or directory - D:/my_project_path/public/system/docs/94/original/╨а╤Я╨б╨В╨а╤С╨а╤Ш╨а┬╡╨б╨В.txt):
app/controllers/orders_controller.rb:138:in `attachment'
回形针保存文件到 D:/my_project_path/public/system/docs/94/original/Пример.txt(我可以通过资源管理器打开它)但数据库中没有创建记录。可能是编码有问题。
我用:
- Windows 7 专业版 x64;
- PostgreSQL 9.0(UTF-8 数据库编码);
- Ruby 1.9.2;
- Ruby on Rails 3.0.7;
- 回形针 2.3.11;
感谢您的帮助。
【问题讨论】:
-
从 'Пример.txt' 到 "╨а╤Я╨б╨В╨а╤С╨а╤Ш╨а┬╡╨б╨В.txt" » 绝对是编码问题。
标签: windows ruby-on-rails-3 paperclip