ajaxFileUpload + lua-resty-upload 上传文件

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:‘‘}")

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。