我是靠谱客的博主 丰富蜻蜓,这篇文章主要介绍Openresty(十九)使用upload上传文件,现在分享给大家,希望可以做个参考。

一    模块地址

(1)源码解读

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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)测试二

复制代码
1
要求:客户端提交的'表单' enctype="multipart/form-data",method="POST"

三    上传失败限制 

(1)保存目录权限问题

(2)上传文件太大

复制代码
1
2
3
4
5
报错:413 Request Entity Too Large [请求实体太大] 原因:超过了nginx配置的'上传文件大小限制'导致的 client_max_body_size 100m; --> 默认大小为'1M'

最后

以上就是丰富蜻蜓最近收集整理的关于Openresty(十九)使用upload上传文件的全部内容,更多相关Openresty(十九)使用upload上传文件内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部