微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Sinatra send_file 尝试存储文件时出现 404 错误

如何解决Sinatra send_file 尝试存储文件时出现 404 错误

我正在尝试通过使用 postman 模拟下载文件

响应 127.0.0.1 - - [18/Jan/2021:03:54:47 -0800] "POST / HTTP/1.1" 404 - 4.4450

命令 send_file "#{filename}",:disposition=> "attachment",:filename => filename,:type => 'application/octet-stream'

post '/' do
  fileSize = env['CONTENT_LENGTH'].to_i/1048576.0 # Converting to MB
  if params.has_key?(:file) && fileSize <= 1
    filename = params['file']["filename"]
    send_file "#{filename}",:type => 'application/octet-stream'
    puts ".......................FILE STORED........................."
  else
    puts "....................FILE NOT VALID........................."
  end  
end

解决方法

在看到您对我的评论的回复后,我可以说这不起作用的原因是 send_file 命令没有提供正确的参数。根据这些文档:https://apidock.com/rails/v2.3.8/ActionController/Streaming/send_file - 您必须附加文件路径作为第一个参数,而不仅仅是文件名。

此外,文件的位置(您的下载文件夹)可能会导致其他问题。该文件应该可以从您的项目目录中的某个位置访问,最好位于 /public 文件夹中。

总结:

  • 将文件移至项目中的 /public 目录。
  • 在文件名前加上存储文件的路径。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。