Ruby CGI 编程学习笔记
什么是 CGI?
CGI(通用网关接口,Common Gateway Interface)是一种Web服务器和其他程序进行交互的标准协议。它允许Web服务器获取来自于Web浏览器的数据,并将其传递到后台程序进行处理,最终把结果返回给Web浏览器。
Ruby 中的 CGI
Ruby在标准库中提供了CGI类,我们可以使用这个类来处理CGI请求。
简单示例
Copy Code#! /usr/bin/env ruby
require 'cgi'
cgi = CGI.new
puts cgi.header
puts "<html><body>"
puts "<h1>Hello, Ruby CGI!</h1>"
puts "</body></html>"
上述示例创建了一个简单的CGI脚本,它将向浏览器输出一个HTML文件,其中包含一个标题:“Hello, Ruby CGI!”
获取请求参数
我们可以通过CGI对象的params方法来获取所有请求参数。下面的示例会输出浏览器上提交的所有参数:
Copy Code#!/usr/bin/env ruby
require 'cgi'
cgi = CGI.new
puts cgi.header
puts "<html><body>"
puts "<table border=1>"
cgi.params.each do |key, value|
puts "<tr><td>#{key}</td><td>#{value}</td></tr>"
end
puts "</table>"
puts "</body></html>"
在上述示例中,我们使用了CGI对象的params方法来获取所有请求参数,并使用一个表格来展示参数。
文件上传
我们可以通过CGI库来实现文件上传功能。下面的示例中,我们向浏览器输出了一个简单的表单,允许用户上传文件:
Copy Code#!/usr/bin/env ruby
require "cgi"
cgi = CGI.new
puts cgi.header
puts <<HTML
<html>
<body>
<h1>Ruby CGI File Upload Example</h1>
<form enctype="multipart/form-data" action="upload.rb" method="POST">
<input type="file" name="file" /><br />
<input type="submit" value="Upload file" />
</form>
</body>
</html>
HTML
下面是处理文件上传的 upload.rb 文件:
Copy Code#!/usr/bin/env ruby
require "cgi"
require "json"
cgi = CGI.new
puts cgi.header
if cgi.request_method == "POST"
uploaded_file = cgi.params["file"][0]
filename = uploaded_file.original_filename
filecontent = uploaded_file.read
File.write(filename, filecontent)
end
puts "Content-Type: application/json\n\n"
puts JSON.generate({status: "File uploaded successfully."})
上述示例中,我们使用了CGI库的request_method方法来获取请求的方法(POST或GET)。如果请求的方法是POST,我们通过CGI库的params方法来获取上传的文件对象,并将其保存到服务器上。最后,我们通过json格式输出一个状态信息,告诉浏览器文件是否上传成功。
总结
本文介绍了如何在Ruby中使用CGI库来处理Web应用程序,包括创建简单的CGI脚本、获取请求参数、以及实现文件上传等功能。CGI是Web应用程序开发中不可缺少的技术之一,掌握CGI编程技术将有助于您开发高效、可靠的Web应用程序。