当我尝试使用paperclip gem上传图像时遇到了问题。
它在我的ubuntu系统上工作正常,但在Windows 10上却没有。
Rails version = 5.1.2
Ruby version = 2.2.6p396
paperclip = 5.2.1
[paperclip]试图将C:/ Users /.../ Temp / c935d187f0b998ef720390f85014ed1e20180310-5860-1yxm99j.png链接到C :/用户/.../温度/ c935d187f0b998ef720390f85014ed1e20180310-5860-1mjjyje.png [paperclip]链接失败,文件存在@sys_fail2 - C:/ Users /.../ Temp / c935d187f0b998ef720390f85014ed1e20 180310-5860-1mjjyje.png;复制链接C:/ Users /.../ Temp / c935d187f0b998ef720390f85014ed1e20180310-5860-1yxm9 9j.png到C:/ Users /.../ Temp / c935d187f0b998ef720390f85014ed1e20180310-5860-1mjjyje.png Command :: file -b --mime“C:/ Users /.../ Temp / c935d187f0b998ef720390f85014ed1e20180310-5860-1mjjyje.png” [paperclip] Content Type Spoof:Filename Dog.png(来自Headers的image / png,来自Extension的[“image / png”]),从文件命令中发现的内容类型:。请参阅文档以允许此组合。
提前致谢。
答案 0 :(得分:1)
正如你在这里看到的那样:
[paperclip]内容类型欺骗:Filename Dog.png(来自Headers的image / png,来自Extension的[“image / png”]),从文件命令中发现的内容类型:。请参阅文档允许这种组合。
Paperclip(或者更确切地说,用于标识Content-Type的file -b --mime
命令)无声地失败,因此会留下空字符串。
它在Ubuntu上运行正常,因为file
程序包含在您的发行版中(您可以使用man file
或which file
等命令进行验证。如果您在Ubuntu上运行sudo apt remove file
然后尝试上传文件,则会产生与上述相同的错误消息。
如果您想在Windows上使用Paperclip,根据this section,您应手动安装file
并添加环境变量的路径:
file.exe
以测试它是否有效。Paperclip.options[:command_path] = 'C:\Program Files (x86)\GnuWin32\bin
添加到您的配置/环境