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应用程序。