在 Linux 系统中,Ruby 提供了多种方法来处理文件的上传和下载
要在 Ruby 中实现文件上传功能,你可以使用 CGI 或者 Sinatra 等 Web 框架。这里我们以 Sinatra 为例:
首先,确保已经安装了 Sinatra gem:
gem install sinatra
然后,创建一个名为 upload.rb
的文件,并添加以下代码:
require 'sinatra'
get '/' do
<<-HTML
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="Upload">
</form>
HTML
end
post '/upload' do
if params[:file] &&
(tmpfile = params[:file][:tempfile]) &&
(name = params[:file][:filename])
File.open("uploads/#{name}", 'wb') do |f|
f.write(tmpfile.read)
end
"File uploaded successfully!"
else
"No file selected."
end
end
这个简单的 Sinatra 应用程序提供了一个表单,允许用户选择要上传的文件。当用户提交表单时,应用程序将接收到的文件保存到名为 “uploads” 的目录中。
要运行此应用程序,请在命令行中输入以下命令:
ruby upload.rb
要在 Ruby 中实现文件下载功能,你可以使用 Sinatra 框架。这里我们继续使用 Sinatra:
在 upload.rb
文件中添加以下代码:
get '/download/:filename' do
filename = params[:filename]
send_file "uploads/#{filename}", :filename => filename, :type => 'application/octet-stream'
end
这段代码定义了一个新的路由,允许用户通过访问 /download/:filename
URL 下载指定的文件。:filename
参数将被替换为实际的文件名。
现在,你可以通过访问 /download/your_file_name
下载已上传的文件。
注意:在生产环境中,你需要添加适当的错误处理和安全措施,例如检查文件是否存在、验证用户身份等。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。