概述
一 模块地址
(1)源码解读
1) lualib/resty/upload.lua 源码
2) 该模块在解析文件'上传请求'的过程中,主要采用了简单的类似"有限状态机的算法"来实现的
3) 在'不同的状态'由相应的 handler 进行处理,支持的状态包括如下4 个handler状态:
state_handlers = {
read_preamble,
read_header,
read_body_part,
eof
}
+++++++++++++++"四个状态详细解释"+++++++++++++++
1) STATE_BEGIN,"初始状态",是在 upload:new 实例化的时候'初始化'的;
2) STATE_READING_HEADER,开始'解析 HTTP 头部消息'
备注:一般在这个阶段主要用于'解析'出其中的'文件名'、boundary 等信息,相应的 handler 为 read_header;
3) STATE_READING_BODY,开始解析 'HTTP 包体',这个阶段就是'读取文件内容';
4) STATE_EOF,如果文件全部都'解析'和'读取'完后,则进入该状态,一般这个阶段表示文件都已经'读取'完;
注意:在'不同'阶段/状态下 read 返回的结构不同
例如:在 STATE_READING_HEADER 下返回的"结构"是 "header",{ key, value, line}
二 操作
(1)upload.lua代码
通过lua-resty-upload实现文件上传的例子
(2)nginx.conf配置文件
io.open
参考
(3)测试一
(4)测试二
要求:客户端提交的'表单' enctype="multipart/form-data",method="POST"
三 上传失败限制
(1)保存目录权限问题
(2)上传文件太大
报错:413 Request Entity Too Large [请求实体太大]
原因:超过了nginx配置的'上传文件大小限制'导致的
client_max_body_size 100m; --> 默认大小为'1M'
最后
以上就是丰富蜻蜓为你收集整理的Openresty(十九)使用upload上传文件的全部内容,希望文章能够帮你解决Openresty(十九)使用upload上传文件所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复