openresty 整合阿里云 oss
2017-04-19 00:00
176 查看
摘要: openresty 整合阿里云oss
目前阿里云官方并为提供lua版的sdk,在网上找了几个,感觉不是很理想,于是自己造了一个轮子,目前还是一个单车的轮子,只实现了部分功能,不过也能用了
废话不多说上代码
上面的例子是直接上传文件并指定内容,文件类型,文件名
真实场景,可能是客户端上传一个文件,然后在nginx获取到文件的内容,文件类型,然后自动生成一个文件名,再调用上面的put_object方法进行上传
文件上传模块可以用lua-resty-upload来处理
lua代码参考:
前端代码参考
delete_object 删除文件
put_bucket 创建bucket
put_bucket_acl 修改bucket权限
delete_bucket 删除bucket
代码已上传github,连接:https://github.com/362228416/lua-resty-oss
更多openresty lua相关内容可以点击这里获取
目前阿里云官方并为提供lua版的sdk,在网上找了几个,感觉不是很理想,于是自己造了一个轮子,目前还是一个单车的轮子,只实现了部分功能,不过也能用了
废话不多说上代码
local oss = require "resty.oss" local oss_config = { accessKey = "your accessKey"; secretKey = "your secretKey"; bucket = "your bucket", endpoint = "your oss endpoint" -- 例如:oss-cn-qingdao.aliyuncs.com } local client = oss.new(oss_config) local url = client:put_object("123", "text/html", "123.json") ngx.say(url) client:delete_object('123.json') client:put_bucket('test-bucket123') client:put_bucket_acl('test-bucket123', 'private') client:put_bucket_acl('test-bucket123', 'public-read') client:delete_bucket('test-bucket123')
上面的例子是直接上传文件并指定内容,文件类型,文件名
真实场景,可能是客户端上传一个文件,然后在nginx获取到文件的内容,文件类型,然后自动生成一个文件名,再调用上面的put_object方法进行上传
文件上传模块可以用lua-resty-upload来处理
lua代码参考:
local upload = require "resty.upload" local oss = require "resty.oss" -- 获取上传的文件 function readFile() local chunk_size = 4096 local form, err = upload:new(chunk_size) form:set_timeout(20000) local file = {} if not err then while true do local typ, res, err2 = form:read() if not typ then err = err2 print("failed to read: ", err2) break end if typ == 'header' and res[1] == 'Content-Disposition' then local filename = string.match(res[2], 'filename="(.*)"') file.name = filename end if typ == 'header' and res[1] == 'Content-Type' then file['type'] = res[2] end if typ == 'body' and file then file[typ] = (file[typ] or '') .. res end if typ == "eof" then break end end end return file, err end local file, err = readFile() local oss_config = { accessKey = "your accessKey"; secretKey = "your secretKey"; bucket = "your bucket", endpoint = "your oss endpoint" -- 例如:oss-cn-qingdao.aliyuncs.com } local client = oss.new(oss_config) local url = client:put_object(file.body, file.type, file.name) ngx.say(url)
前端代码参考
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Upload</title> </head> <body> <input id="fileupload" type="file"/> <script type="text/javascript" src="https://cdn.staticfile.org/jquery/1.11.1/jquery.min.js"></script> <script type="text/javascript" src="http://blueimp.github.io/jQuery-File-Upload/js/vendor/jquery.ui.widget.js"></script> <script type="text/javascript" src="http://blueimp.github.io/jQuery-File-Upload/js/jquery.fileupload.js"></script> <script type="text/javascript"> var url = '/hello'; $('#fileupload').fileupload({ url: url, dataType: 'text', done: function (e, data) { console.log('succcess', data); }, progressall: function (e, data) { console.log(data); } }) </script> </body> </html>
已实现方法
put_object 上传文件delete_object 删除文件
put_bucket 创建bucket
put_bucket_acl 修改bucket权限
delete_bucket 删除bucket
代码已上传github,连接:https://github.com/362228416/lua-resty-oss
更多openresty lua相关内容可以点击这里获取
相关文章推荐
- Laravel整合UEditor编辑器使用阿里云OSS存储(二)改造UEditor上传OSS
- OSS阿里云存储——整合Spring文件上传,实现动静网站资源分离
- phpcmsv9 阿里云OSS云存储整合教程
- Spring整合阿里云OSS服务实现文件上传
- 在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现本地文件上传流程
- 阿里云Tengine和Openresty/1.11.2.3 数据对比
- dedecms远程附件图片整合阿里云存储OSS插件教程
- ThinkPHP5简单整合阿里云OSS存储
- Spring Boot---(19)SpringBoot整合阿里云OSS存储服务2
- openresty lua zlib整合安装 让lua支持解压服务端压缩过的数据
- 最新整合阿里云OSS方法-phpcms
- Laravel整合UEditor编辑器使用阿里云OSS存储(一)UEditor搭建和使用
- 在OneThink(ThinkPHP3.2.3)中整合阿里云OSS的PHP-SDK2.0.4,实现Web端直传,服务端签名直传并设置上传回调的实现流程
- 搭建阿里云服务器环境(OpenResty+PHP 7+MySQL5.7)
- 整合阿里云OSS文件上传1
- Laravel整合UEditor编辑器使用阿里云OSS存储(二)改造UEditor上传OSS
- yii2.0整合阿里云oss的示例代码
- yii2.0整合阿里云oss上传单个文件的示例
- Spring Boot---(18)SpringBoot整合阿里云OSS存储服务1
- YII2与Thinkphp整合阿里云OSS