在Crystal语言中,可以使用HTTP::Server和HTTP::Client模块来实现文件的上传和下载。
以下是一个简单的例子,演示了如何使用Crystal语言实现文件上传和下载:
require "http/server"
require "http/multipart"
server = HTTP::Server.new do |context|
if context.request.method == "POST" && context.request.path == "/upload"
body = context.request.body.try(&.to_io)
parser = HTTP::Multipart::Parser.new(body)
parser.each do |field|
if field.filename?
File.open("uploaded_file.txt", "w") do |file|
IO.copy(field, file)
end
context.response.print "File uploaded successfully"
end
end
else
context.response.print "Invalid request"
end
end
address = server.bind_tcp(8080)
puts "Listening on http://#{address}"
server.listen
require "http/client"
client = HTTP::Client.new
response = client.get("http://example.com/download/file.txt")
if response.status_code == 200
File.open("downloaded_file.txt", "w") do |file|
IO.copy(response.body, file)
end
puts "File downloaded successfully"
else
puts "Error downloading file: #{response.status_code}"
end
以上代码中,文件上传的示例创建一个HTTP服务器,监听端口8080,并在POST请求中接收上传的文件,并将其保存为uploaded_file.txt。而文件下载的示例创建一个HTTP客户端,发送GET请求下载文件,并保存为downloaded_file.txt。
需要注意的是,以上示例仅用于演示目的,实际应用中可能需要添加更多的错误处理和安全性校验。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。