我是靠谱客的博主 丰富蜻蜓,最近开发中收集的这篇文章主要介绍Openresty(十九)使用upload上传文件,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一    模块地址

(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上传文件所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部