ajaxFileUpload + lua-resty-upload 上传文件

简介: ajaxFileUpload下载地址 地址:http://pan.baidu.com/s/1mgJypz6 html页面 DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.

ajaxFileUpload下载地址

地址:http://pan.baidu.com/s/1mgJypz6

html页面

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <title>Untitled</title>
    <script src="jquery-1.7.1.js"></script>
    <script src="ajaxfileupload.js"></script>
     <script type="text/javascript">
        $(function () {
            $(":button").click(function () {
                ajaxFileUpload();
            })
        })
        function ajaxFileUpload() {
            $.ajaxFileUpload
            (
                {
                    url: '/dsideal_yy/rating/test', //用于文件上传的服务器端请求地址                    
                    fileElementId: 'file1', //文件上传空间的id属性  <input type="file" id="file" name="file" />
                    dataType: 'json', //返回值类型 一般设置为json
                    success: function (data)  //服务器成功响应处理函数
                    {                        
                        alert(data.msg);
                    }
                }
            )
            return false;
        }
    </script>
  </head>
  <body>
    <body>
        <p><input type="file" id="file1" name="file" /></p>
        <input type="button" value="上传" />
    </body>    
</html>

lua代码

local upload = require "resty.upload"
local uuid =  require "resty.uuid";

local chunk_size = 4096
local form = upload:new(chunk_size)
local file

--获取文件名
function get_filename(res) 
    local filename = ngx.re.match(res,'(.+)filename="(.+)"(.*)') 
    if filename then  
        return filename[2] 
    end 
end 

--获取文件扩展名
function getExtension(str)
    return str:match(".+%.(%w+)$")
end

while true do
    local typ, res, err = form:read()    
    if not typ then         
         ngx.say("{error:'error', msg:'"..tostring(err).."',imgurl:''}")
         return
    end
    if typ == "header" then
        if res[1] ~= "Content-Type" then
            local file_id = uuid.new()
            local filen_ame = get_filename(res[2])
            local extension = getExtension(filen_ame)
            local dir = string.sub(file_id,0,2)            
            local file_name = "/usr/local/tomcat7/webapps/dsideal_yy/html/down/Material/"..dir.."/"..file_id.."."..extension            
            if file_name then
                file = io.open(file_name, "w+")
                if not file then
                    ngx.say("{error:'error', msg:'failed to open file',imgurl:''}")
                    return
                end
            end
        end
     elseif typ == "body" then
        if file then
            file:write(res)            
        end
    elseif typ == "part_end" then
        file:close()
        file = nil
    elseif typ == "eof" then
        break
    else
        -- do nothing
    end
end

ngx.say("{error:'success', msg:'上传成功!',imgurl:''}")

 

相关文章
|
应用服务中间件 nginx
解决nginx + lua 上传文件问题
本文的原文连接是: http://blog.csdn.net/freewebsys/article/details/49509123 未经博主允许不得转载。 博主地址是:http://blog.csdn.net/freewebsys 1,首先不能创建upload对象 直接报错 failed to new upload: request body already ex
2063 0
|
5月前
|
存储 NoSQL Redis
Redis的Lua脚本有什么作用?
Redis Lua脚本用于减少网络开销、实现原子操作及扩展指令集。它能合并操作降低网络延迟,保证原子性,替代不支持回滚的事务。通过脚本,代码复用率提高,且可自定义指令,如实现分布式锁,增强Redis功能和灵活性。
204 1
|
1天前
|
缓存 分布式计算 NoSQL
大数据-43 Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
大数据-43 Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
12 2
|
4月前
|
消息中间件 NoSQL Java
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
Redis系列学习文章分享---第六篇(Redis实战篇--Redis分布式锁+实现思路+误删问题+原子性+lua脚本+Redisson功能介绍+可重入锁+WatchDog机制+multiLock)
216 0
|
1月前
|
存储 JSON Ubuntu
如何使用 Lua 脚本进行更复杂的网络请求,比如 POST 请求?
如何使用 Lua 脚本进行更复杂的网络请求,比如 POST 请求?
|
2月前
|
存储 NoSQL Redis
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
Tair的发展问题之在Redis集群模式下,Lua脚本操作key面临什么问题,如何解决
|
5月前
|
缓存 NoSQL Java
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
【Redis】5、Redis 的分布式锁、Lua 脚本保证 Redis 命令的原子性
195 0
|
4月前
|
JSON 监控 数据格式
使用Lua代码扩展上网行为管理软件的脚本功能
本文介绍了如何使用Lua脚本增强上网行为管理,包括过滤URL、记录用户访问日志、控制带宽和自动提交监控数据到网站。Lua是一种轻量级语言,适合编写扩展脚本。文中提供多个示例代码,如URL过滤器、用户活动日志记录器和带宽控制器,帮助用户根据需求定制网络管理功能。通过这些示例,用户可以快速掌握Lua在上网行为管理中的应用。
158 4
|
4月前
|
NoSQL API Redis
使用Redis Lua脚本实现高级限流策略
使用Redis Lua脚本实现高级限流策略
166 0
|
4月前
|
消息中间件 NoSQL Java
Spring Boot中使用Redis和Lua脚本实现延时队列
Spring Boot中使用Redis和Lua脚本实现延时队列