1. 程式人生 > >nginx基於lua-resty-upload實現檔案上傳

nginx基於lua-resty-upload實現檔案上傳

package.path = '/usr/local/openresty/lualib/resty/?.lua;'
local upload = require "upload"


local chunk_size = 4096
local form = upload:new(chunk_size)
local file
local filelen=0
form:set_timeout(0) -- 1 sec
local filename


function get_filename(res)
    local filename = ngx.re.match(res,'(.+)filename="(.+)"(.*)'
) if filename then return filename[2] end end local osfilepath = "/usr/local/openresty/nginx/html/" local i=0 while true do local typ, res, err = form:read() if not typ then ngx.say("failed to read: ", err) return end if typ == "header" then if res[1
] ~= "Content-Type" then filename = get_filename(res[2]) if filename then i=i+1 filepath = osfilepath .. filename file = io.open(filepath,"w+") if not file then ngx.say("failed to open file "
) return end else end end elseif typ == "body" then if file then filelen= filelen + tonumber(string.len(res)) file:write(res) else end elseif typ == "part_end" then if file then file:close() file = nil ngx.say("file upload success") end elseif typ == "eof" then break else end end if i==0 then ngx.say("please upload at least one file!") return end

將上面這個 savefile.lua 檔案放到了 nginx/conf/lua/ 目錄中
nginx.conf 配置檔案中新增如下的配置 :
location /uploadfile
{
content_by_lua_file ‘conf/lua/savefile.lua’;
}

用下面的上傳命令進行測試成功
curl -F “[email protected]http://127.0.0.1/uploadfile
注意lua-resty-upload模組只能上傳有boundary的post請求體,沒有boundary的話需要使用socket來進行傳輸。

相關推薦

nginx基於lua-resty-upload實現檔案

package.path = '/usr/local/openresty/lualib/resty/?.lua;' local upload = require "upload" local chu

基於jquery的Ajax實現 檔案

---------------------------------------------------------------遇到困難的時候,勇敢一點,找同學朋友幫忙,找導師求助. Ajax Ajax簡介 AJAX(Asynchronous Javascript And XML)翻譯成中文就是“非同

springboot基於MultipartFile實現檔案

MultipartFile是springMVC的jar包,不需要其它座標,可以直接使用 一. 新建controller @RequestMapping("/uploadTest1") public String test1(@RequestParam("

基於tobato的fastdfs與spring boot整合實現檔案和下載

專案結構: pom.xml檔案新增配置: <!-- fastdfs --> <dependency> <groupId>com.github.tobato</groupId> <artifactId>fastd

FastDFS和nginx實現檔案詳解

1.什麼是FastDFS FastDFS 是用 c 語言編寫的一款開源的分散式檔案系統FastDFS 為網際網路量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高效能等指標,使用 FastDFS很容易搭建一套高效能的檔案伺服器叢集提供檔案上傳、下載等服務。 FastDF

如何在基於Java的Web專案中實現檔案和下載?

在Sevlet 3 以前,Servlet API中沒有支援上傳功能的API,因此要實現上傳功能需要引入第三方工具從POST請求中獲得上傳的附件或者通過自行處理輸入流來獲得上傳的檔案,我們推薦使用Apac

基於Servlet3.0+註解開發實現檔案

檔案上傳:   * 要求:        1.表單的提交方式必須是POST        2.表單中必須有<input type="file" name="upload"/>標籤,而且該標籤必須有name屬性.        3.表單的enctype屬性的值,必須

由SpringMVC實現檔案,前端基於easyui

後臺控制層的方法參考部落格:http://blog.csdn.net/qciwyy/article/details/54017166 本部落格主要講解前臺方法(基於easyui的easyui-filebox控制元件) 一 .easyui-1.4.0前版本使用方法,在這之前e

如何基於ServiceComb實現檔案功能

檔案上傳,當前支援在vertx rest通道和servlet rest中使用。 檔案上傳使用標準的http form格式,可與瀏覽器的上傳直接對接。 Producer: 支援jaxrs和springmvc開發模式 jaxrs開發模式: 支援servlet定義的j

struts2實現檔案與下載功能

一、Demo介紹 基於struts2框架,實現多檔案的上傳和下載功能。 實現原理圖: 部分介面圖: 上傳成功及下載頁面: 二、主要程式碼 uploadFile.jsp:在form表單中包含一個文字框(上傳使用者的姓名)和兩個檔案上傳選項. <%@

Java Springboot結合FastDFS實現檔案以及根據圖片url將圖片至圖片伺服器

上一篇文章我們已經講解了如何搭建FastDFS圖片伺服器,環境我們準備好了現在就讓我們開始與Java結合將他應用到實際的專案中吧。本篇文章我們將會展示上傳圖片到FastDFS圖片伺服器以及通過外網的圖片url將圖片上傳至我們自己的圖片伺服器中。 1.建立springbo

yii框架實現檔案

yii框架實現檔案上傳 1.首先yii框架下載uploadFile類 2.html程式碼 <input type="file" class="file" style="display: none" name="business_license" /> 3.j

原生javascript實現檔案功能程式碼

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ini

【SSH網上商城專案實戰13】Struts2實現檔案功能

  轉自:https://blog.csdn.net/eson_15/article/details/51366384 上一節我們做完了新增和更新商品的功能,這兩個部分裡有涉及到商品圖片的上傳,並沒有詳細解說。為此,這篇文章詳細介紹一下Struts2實現檔案上傳的功能。 1

關於myeclipse實現檔案與使用的路徑問題

在檔案上傳的時候編寫檔案儲存應該儲存到 myeclipse 的workspace的工程目錄下面,而不是放到tomcat的webapps下面。否則eclipse 無法更新檔案。 換句話講,在eclipse中新增檔案,comcat的專案檔案中可以看見新增的文體,但是反過來,在comcat的工程目錄下

servlet3.0實現檔案

servlet3.0實現檔案上傳功能 必須使用tomcat7以上的技術才能支援servlet3.0 servlet3.0 比 servlet2.5 多提供了三個新特性:   註解開發:方便   檔案上傳:有些api不是特別全   非同步請求:基本不用,使用ajax替代 檔案上傳技術: 1

Extjs+C# 實現檔案

Extjs 程式碼 var ImportPanel = new Ext.form.FormPanel({ baseCls: 'x-plain', frame: false,    // 注意formPanel裡面的fileUpload一定要開啟

HTTP POST請求報文格式分析與Java實現檔案

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

JavaScript的FormData+Ajax實現檔案+圖片

 JavaScript的FormData+Ajax實現檔案上傳+圖片上傳 在很多網頁開發中會存在檔案上傳,圖片上傳的操作,有的使用form表單預設功能提交檔案,有的採用Ajax提交 如果採用form表單的提交方式,恰恰又需要新增額外的引數或者需要設定特定的請求頭資訊,那麼這種方式就