:image => StorageRoom::Image.new_with_filename(path)
我必须得到图像的路径。到目前为止,我已经手动指定了路径并且它有效,现在我已经放入了 heroku,但它显示加载错误 - 没有这样的文件存在。如何使用浏览按钮获取本地系统的路径值。
File.expand_path
参考:http ://saaridev.blogspot.com/2006/11/ruby-finding-absolute-path-of-running.html
您的问题可能与路径名无关,而与 Heroku 具有只读文件系统这一事实有关。如果您尝试在 Heroku 应用程序中将文件写入磁盘,它根本不起作用——文件将不会被保存。
例外是“临时”目录。您可以将文件保存在那里,但不能保证它们的持续时间超过单个请求的持续时间。
您尝试打开的文件是否实际保存在您的 Git 存储库中?如果是这样,它将在您的 Heroku 应用程序的磁盘上,您应该能够打开它。
要查看 Heroku 实例上的文件系统布局,您可以创建一个控制器方法,例如:
render :inline => Dir['**/*'].inspect
您不需要完整路径。就客户端机器中的文件路径而言,对于文件上传而言,路径是无关紧要的,因为它会给用户带来安全风险。
大多数现代浏览器不会发送文件上传的文件路径。您可以使用 Javascript 或 Flash 获取路径,但我仍然看不到这样做的逻辑。
当用户点击提交按钮时,浏览器至少应该向您发送文件名和文件数据以及一堆其他信息,如 mime 类型。假设您有近乎无限的内存资源,您的 Web 服务器会将文件写入磁盘或在内存中处理它。查看RFC 1867以了解有关文件上传的更多信息。