diff --git a/README.md b/README.md index e53cb8d..1329bec 100644 --- a/README.md +++ b/README.md @@ -1,264 +1,33 @@ - - -# Resty Function - -* [1.图片上传](#1) -* [2.图片拼接](#2) -* [4.图片下载](#3) - ------- -## 前置安装 - -- 安装opm -```bash -sudo dnf -f install dnf -y install openresty-opm -``` - -- 安装 lua-resty-jit-uuid https://github.com/thibaultcha/lua-resty-jit-uuid -```bash - opm get thibaultcha/lua-resty-jit-uuid -``` - -- 通用命令 重启服务 -```bash -$ sudo openresty -t -nginx: the configuration file /usr/local/openresty/nginx/conf/nginx.conf syntax is ok -nginx: configuration file /usr/local/openresty/nginx/conf/nginx.conf test is successful -#首先要openresty nginx配置文件无误 -$ sudo systemctl restart openresty -#重启openresty服务不报错 -``` - -## nginx根配置 -- 配置openresty -```nginx configuration -# 配置文件路径 -# /usr/local/openresty/nginx/conf/nginx.conf -# http contex 中添加lua脚本的路径 -lua_package_path "/usr/local/openresty/resty_funcs/?.lua;;"; -``` - -

1.图片上传

- - - music-room配置 - - ```nginx configuration - # 子域名配置文件路径 - # /usr/local/openresty/nginx/conf.d/music-room.conf - - # server contex 中添加文件存储路径变量 - set $store_dir "/file_upload/"; # 文件存储路径 - - # server contex 中添加location - - # Upload image file - location /upload_image { - content_by_lua_file /usr/local/openresty/resty_funcs/upload_image.lua; - } - ``` - -- 添加lua脚本 - -将file_upload文件夹下的upload_image.lua 拷贝到如下路径 +put `upload.lua` into: ```bash -/usr/local/openresty/resty_funcs -. -└── upload_image.lua +/usr/local/opt/openresty/nginx/resty_funcs ``` -- 测试curl命令 +post file: ```bash -curl -v -F 'up_load_json=@./test_files/tile-0.jpg' -F 'up_load_json=@./test_files/tile-1.jpg' -F 'up_load_json=@./test_files/tile-2.jpg' https://music-room.alchemy-studio.cn/upload_image +$ curl --location --request POST 'localhost/upload' \ +--form '=@"/Users/weli/works/task_server/src/test/resources/file_example_JPG_100kB.jpeg"' ``` -⚠️ **./test_files/test0.jpg ./test_files/test1.jpg ./test_files/test2.jpg 为三张上传拼接的图片的路径和文件名** +nginx config -```bash - * Trying 152.136.103.69... - * TCP_NODELAY set - * Connected to music-room.alchemy-studio.cn (152.136.103.69) port 443 (#0) - * ALPN, offering h2 - * ALPN, offering http/1.1 - * successfully set certificate verify locations: - * CAfile: /etc/ssl/cert.pem - CApath: none - * TLSv1.2 (OUT), TLS handshake, Client hello (1): - * TLSv1.2 (IN), TLS handshake, Server hello (2): - * TLSv1.2 (IN), TLS handshake, Certificate (11): - * TLSv1.2 (IN), TLS handshake, Server key exchange (12): - * TLSv1.2 (IN), TLS handshake, Server finished (14): - * TLSv1.2 (OUT), TLS handshake, Client key exchange (16): - * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1): - * TLSv1.2 (OUT), TLS handshake, Finished (20): - * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1): - * TLSv1.2 (IN), TLS handshake, Finished (20): - * SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384 - * ALPN, server accepted to use http/1.1 - * Server certificate: - * subject: CN=music-room.alchemy-studio.cn - * start date: May 16 05:38:01 2021 GMT - * expire date: Aug 14 05:38:01 2021 GMT - * subjectAltName: host "music-room.alchemy-studio.cn" matched cert's "music-room.alchemy-studio.cn" - * issuer: C=US; O=Let's Encrypt; CN=R3 - * SSL certificate verify ok. - > POST /upload_image HTTP/1.1 - > Host: music-room.alchemy-studio.cn - > User-Agent: curl/7.64.1 - > Accept: */* - > Content-Length: 299590 - > Content-Type: multipart/form-data; boundary=------------------------67148dd99aa78bdc - > Expect: 100-continue - > - < HTTP/1.1 100 Continue - * We are completely uploaded and fine - < HTTP/1.1 200 OK - < Server: openresty/1.19.3.2 - < Date: Thu, 22 Jul 2021 12:01:51 GMT - < Content-Type: application/octet-stream - < Transfer-Encoding: chunked - < Connection: keep-alive - < - -->> POST : Upload origin image is test0.jpg - - - Open file ok 82e3830b-c6ee-45cd-85c6-246682c087aa.jpg - - - Insert upload image table 1 with /file_upload/82e3830b-c6ee-45cd-85c6-246682c087aa.jpg - - - -->> POST : Upload origin image is test1.jpg - - - Open file ok f67ece02-cb5c-48f8-9ff9-e56c69239b15.jpg - - - Insert upload image table 2 with /file_upload/f67ece02-cb5c-48f8-9ff9-e56c69239b15.jpg - - - -->> POST : Upload origin image is test2.jpg - - - Open file ok 992da1f2-9a9e-41e2-a14d-9d57aa07dcd2.jpg - - - Insert upload image table 3 with /file_upload/992da1f2-9a9e-41e2-a14d-9d57aa07dcd2.jpg - - - Show all upload files - - Save upload file is : /file_upload/82e3830b-c6ee-45cd-85c6-246682c087aa.jpg - - - Save upload file is : /file_upload/f67ece02-cb5c-48f8-9ff9-e56c69239b15.jpg - - - Save upload file is : /file_upload/992da1f2-9a9e-41e2-a14d-9d57aa07dcd2.jpg - - - Input images list : /file_upload/82e3830b-c6ee-45cd-85c6-246682c087aa.jpg /file_upload/f67ece02-cb5c-48f8-9ff9-e56c69239b15.jpg /file_upload/992da1f2-9a9e-41e2-a14d-9d57aa07dcd2.jpg - - - Output image is : /file_upload/553120d6-879d-4c9f-a74a-8319b7903642.jpg - - - /usr/local/ImageMagick/bin/magick convert -append /file_upload/82e3830b-c6ee-45cd-85c6-246682c087aa.jpg /file_upload/f67ece02-cb5c-48f8-9ff9-e56c69239b15.jpg /file_upload/992da1f2-9a9e-41e2-a14d-9d57aa07dcd2.jpg /file_upload/553120d6-879d-4c9f-a74a-8319b7903642.jpg - - - - * Connection #0 to host music-room.alchemy-studio.cn left intact - * Closing connection 0 +``` +/usr/local/etc/openresty/nginx.conf ``` -- 查看上传文件和拼接文件 - -```bash -$ pwd -/file_upload -$ ls -l -总用量 1440 --rw-rw-rw- 1 nobody nobody 99699 7月 21 22:25 08916bcf-93f4-4a2a-8d39-0e11174fdb90.jpg --rw-rw-rw- 1 nobody nobody 35979 7月 22 11:46 52b2a24d-da6c-41e8-8cdb-2eab371eb56f.jpg --rw-rw-rw- 1 nobody nobody 298648 7月 22 20:01 553120d6-879d-4c9f-a74a-8319b7903642.jpg --rw-rw-rw- 1 nobody nobody 298648 7月 21 22:25 6143c43c-e2ab-4002-b391-9f82f6008931.jpg --rw-rw-rw- 1 nobody nobody 99699 7月 22 20:01 82e3830b-c6ee-45cd-85c6-246682c087aa.jpg --rw-rw-rw- 1 nobody nobody 99699 7月 21 22:25 8f2cd5d0-09f6-4be7-9829-3a12e92b81d3.jpg --rw-rw-rw- 1 nobody nobody 99699 7月 22 20:01 992da1f2-9a9e-41e2-a14d-9d57aa07dcd2.jpg --rw-rw-rw- 1 nobody nobody 6109 7月 22 11:46 9c831637-7de6-4255-8878-f2069b8f4f08.jpg --rw-rw-rw- 1 nobody nobody 99699 7月 21 22:25 9ec1a383-9678-4c16-834f-57b4d7f87a1d.jpg ``` - -

2.图片拼接

- -- music-room配置 - -```nginx configuration -# 子域名配置文件路径 -# /usr/local/openresty/nginx/conf.d/music-room.conf - -# server contex 中添加文件存储路径变量 -set $store_dir "/file_upload/"; # 文件存储路径 - -# server contex 中添加location - -#Image append -location /image_append { - content_by_lua_file /usr/local/openresty/nginx/conf/lua/image_append.lua; +location /upload { + content_by_lua_file /usr/local/opt/openresty/nginx/resty_funcs/upload.lua; } ``` -- 添加lua脚本 +enable log: -```bash -/usr/local/openresty/resty_funcs -. -└── image_append.lua +``` +error_log /usr/local/etc/openresty/logs/error.log; ``` -

3.图片下载

- -- music-room配置- - -```nginx configuration -# 子域名配置文件路径 -# /usr/local/openresty/nginx/conf.d/music-room.conf - -# server contex 中添加location - -#Static file server - location /file_upload { - default_type ""; - alias /file_upload/; - autoindex on; - autoindex_exact_size off; - autoindex_localtime on; - } -#Download image files -location /download_image { - rewrite_by_lua_block{ - -- Get download image id - local download_image_id = string.match(ngx.var.request_uri, ".*/(.*)$") - ngx.log(ngx.INFO , "Download image id: " .. download_image_id) - - -- Set redirect uri - --local uri = "/internal_file_upload/" .. download_image_id .. ".jpg" - --return ngx.exec(uri) - - local uri = "/file_upload/" .. download_image_id .. ".jpg" - return ngx.exec(uri, {a = download_image_id}) - } -} -``` - -- wget测试 - -```bash -wget http://localhost:8080/download_image/{download_image_uuid} -``` - - - diff --git a/prod/upload/combine.lua b/combine.lua similarity index 100% rename from prod/upload/combine.lua rename to combine.lua diff --git a/dev/conf.d/music-room.conf b/dev/conf.d/music-room.conf deleted file mode 100644 index 442ff9b..0000000 --- a/dev/conf.d/music-room.conf +++ /dev/null @@ -1,52 +0,0 @@ -server { - server_name music-room.alchemy-studio.cn; - listen 443 ssl; - - set $store_dir "/file_upload/"; # 文件存储路径 - - location / { - try_files $uri $uri/ /index.html; - proxy_set_header Host music-room.alchemy-studio.cn; - proxy_set_header X-Real-IP $remote_addr; - proxy_set_header X-Forwarded-Proto https; - proxy_set_header X-Forwarded-For $remote_addr; - proxy_set_header X-Forwarded-Host $remote_addr; - - } - - root /usr/local/openresty/nginx/html/music-room; - index index.html; - -location /test_hello_world { - #设置content type - default_type text/html ; - # HTTP Status Code 和 内容 - return 200 "hello world! "; -} - - #Upload dir - location /append_file_output { - default_type ""; - alias /file_upload; - autoidex on; - autoindex_exact_size off; - autoindex_localtime on; - } - - #Upload image file - location /upload_image { - content_by_lua_file /usr/local/openresty/resty_funcs/upload_image.lua; - } - - location /ws/ { - proxy_pass http://127.0.0.1:3001/; - proxy_set_header Host music-room.alchemy-studio.cn; - } - location /uc/ { - proxy_pass http://127.0.0.1:3000/; - proxy_set_header Host music-room.alchemy-studio.cn; - } - - ssl_certificate /etc/letsencrypt/live/music-room.alchemy-studio.cn/fullchain.pem; # managed by Certbot - ssl_certificate_key /etc/letsencrypt/live/music-room.alchemy-studio.cn/privkey.pem; # managed by Certbot -} diff --git a/dev/download_image/download_image.lua b/dev/download_image/download_image.lua deleted file mode 100644 index 30227d8..0000000 --- a/dev/download_image/download_image.lua +++ /dev/null @@ -1,7 +0,0 @@ ----- Get download image id ---local download_image_id = string.match(ngx.var.request_uri, ".*/(.*)$") ---ngx.log(ngx.INFO , "Download image id: " .. download_image_id) --- ----- Set redirect uri ---local uri = "/internal_file_upload/" .. download_image_id .. ".jpg" ---return ngx.exec(uri) \ No newline at end of file diff --git a/dev/file_upload/upload_image.lua b/dev/file_upload/upload_image.lua deleted file mode 100644 index cb35e6a..0000000 --- a/dev/file_upload/upload_image.lua +++ /dev/null @@ -1,223 +0,0 @@ --- Require lua modules -local upload = require "resty/upload" -local uuid = require "resty.jit-uuid" -local redis = require "resty.redis" -local cjson = require "cjson" ---------------------------------------------------------------------------------------- - --- Functions : String split -string.split = function(s, p) - local rt= {} - string.gsub(s, '[^'..p..']+', function(w) table.insert(rt, w) end ) - return rt -end - --- Functions : Get file trim -string.trim = function(s) - return (s:gsub("^%s*(.-)%s*$", "%1")) -end ---------------------------------------------------------------------------------------- - --- Init ----- Upload init -local chunk_size = 5 -- should be set to 4096 or 8192 --- for real-world settings - -local form, error = upload:new(chunk_size) - -if not form then - ngx.log(ngx.ERR, "Fail to create new form: ", error) - ngx.exit(500) -end - ----- Automatic seeding with os.time(), LuaSocket, or ngx.time() -uuid.seed() -uuid() - ----- Redis init ------- Connect to redis -local redis_task_database = redis:new() - -redis_task_database:set_timeouts(1000, 1000, 1000) - -local ok, error = redis_task_database:connect("127.0.0.1", 6379) -if not ok then - ngx.log(ngx.ERR, "Fail to connect redis: ", error) - ngx.exit(500) -end ---------------------------------------------------------------------------------------- - --- Save upload images ----- Upload file save path config in nginx.conf -local save_upload_file_path = ngx.var.store_dir -local file_to_save -local ret_save = false -local upload_image_filename -local save_image_filename -local upload_image_table = {} -local data_table = {} -local upload_image_index = 1 - -form:set_timeout(1000) -- 1 sec - ----- Read image file from http packet and save it -while true do - - local http_type, result, error = form:read() - - if not http_type then - ngx.log(ngx.ERR, "Failed to read form: ", error) - ngx.exit(500) - end - - if http_type == "header" then - -- Start to read http header - - local key = result[1] - local value = result[2] - - if key == "Content-Disposition" then - - -- Analyze this time upload image filename , use ; as interval - -- Like: form-data; name="testFileName"; filename="testfile.txt" - local key_value_list = string.split(value, ';') - - for _, key_value in ipairs(key_value_list) do - - local segment = string.trim(key_value) - - if segment:find("filename") then - - local key_value_file = string.split(segment, "=") - upload_image_filename = string.sub(key_value_file[2], 2, -2) - - ngx.log(ngx.INFO, "Upload origin filename: ", upload_image_filename) - - -- Save upload file - if upload_image_filename then - -- Save file name with generate uuid - save_image_filename = uuid:generate_v4() -- Generate save filename uuid - save_image_filename = save_image_filename .. '.' .. upload_image_filename:match(".+%.(%w+)$") - file_to_save = io.open(save_upload_file_path .. save_image_filename, "w+") - - if not file_to_save then - ngx.log(ngx.ERR , "Fail open file: ", save_image_filename) - ngx.exit(500) - else - ngx.log(ngx.INFO, "Success open file: ", save_image_filename) - - -- Save all upload files as a table - data_table[upload_image_index] = save_image_filename - upload_image_table[upload_image_index] = save_upload_file_path .. save_image_filename .. " " - ngx.log(ngx.INFO, "Insert upload image table "..upload_image_index.." with "..upload_image_table[upload_image_index]) - - upload_image_index = upload_image_index + 1 - end - break - end - end - end - end - - elseif http_type == "body" then - - -- Start to read http body - if file_to_save then - file_to_save:write(result) - end - - elseif http_type == "part_end" then - - -- Write to save file finish - if file_to_save then - file_to_save:close() - file_to_save = nil - end - - ret_save = true - - elseif http_type == "eof" then - -- Read file end - break - else - ngx.log(ngx.INFO, "Maybe do other things") - end -end ---------------------------------------------------------------------------------------- - --- Show all input and may output files -if ret_save then - ngx.log(ngx.INFO, "Show all upload save files\n") - - ---- Show all upload save files - upload_image_index = upload_image_index -1 - for i = 1, upload_image_index do - ngx.log(ngx.INFO, "Save upload file is : " .. upload_image_table[i]) - end - --------------------------------------------------------------------------------------- - - -- Communicate with front end - ---- Generate task uuid - local task_uuid = uuid.generate_v4(); - --------------------------------------------------------------------------------------- - - -- Construct {key: task_id | value: [images] } in json - -- Example: - -- {"task_id":"488a8e6c556a-4271-adec--071e843c9856","data:"[\"2109aac0-556a-4271-adec-9eac494f622f.jpg\",\"488a8e6c-01e6-4cb3-af88-a1d90e04e6b8.jpg\",\"c3f76317-592f-4117-ab0d-071e843c9856.jpg\"]"} - local task_table = {} - task_table["task_id"] = task_uuid - task_table["data"] = data_table - - local task_jason = cjson.encode(task_table) - ngx.log(ngx.INFO , task_jason) -- Response to front end - --------------------------------------------------------------------------------------- - - -- Redis control - ---- Set json to redis - ok, error = redis_task_database:set(task_uuid, task_jason) - if not ok then - ngx.log(ngx.ERR , "Failed to set task json: ", error) - ngx.exit(500) - end - ngx.log(ngx.INFO , "Set redis task json result: ", ok) - - ---- Get data from redis - local result, error = redis_task_database:get(task_uuid) - if not result then - ngx.log(ngx.ERR , "Failed to get task json: ", error) - ngx.exit(500) - end - - if result == ngx.null then - ngx.log(ngx.ERR , "Not found task id") - ngx.exit(500) - end - - ngx.log(ngx.INFO, "Get redis task id: " .. task_uuid .. " | value :" .. result) - --------------------------------------------------------------------------------------- - - -- Create task - local result = ngx.location.capture( - '/mock_task_server', - { - method = ngx.HTTP_POST, - body = ngx.encode_args({task = task_jason}) - } - ) - ngx.say(result.body) - - -- Response task ID to front end - ngx.say(task_uuid) - - -- Mock a image append request from task from task server - local result = ngx.location.capture( - '/image_append', - { - method = ngx.HTTP_POST, - body = ngx.encode_args({task = task_jason}) - } - ) - ngx.say(result.body) - - -end \ No newline at end of file diff --git a/dev/image_append/image_append.lua b/dev/image_append/image_append.lua deleted file mode 100644 index a2b0048..0000000 --- a/dev/image_append/image_append.lua +++ /dev/null @@ -1,58 +0,0 @@ -local uuid = require "resty.jit-uuid" -local cjson = require "cjson" - -local json_string = nil - ----- Automatic seeding with os.time(), LuaSocket, or ngx.time() -uuid.seed() -uuid() - --- Get post json argv -local arg = ngx.req.get_post_args() -for k,v in pairs(arg) do - ngx.log(ngx.INFO , "Image append [POST] key:", k .." | ".." v:", v) - json_string = v -end - --- Decode json string -local json = cjson.decode(json_string) -ngx.say("Image append input filename number is :" , table.getn(json.data)) -local image_append_input_files_number = table.getn(json.data) -for i = 1, image_append_input_files_number do - ngx.log(ngx.INFO , "Image append input filename is :" , json.data[i]) -end - --- Image append ----- Upload file save path config in nginx.conf -local save_upload_file_path = ngx.var.store_dir -local append_image_table = {} -local output_image_uuid = uuid.generate_v4(); - --- Add path to input image filename -for i = 1, image_append_input_files_number do - append_image_table[i] = save_upload_file_path .. json.data[i] .. " " - ngx.log(ngx.INFO, "Insert append image table "..i.." with "..append_image_table[i]) -end - --- Concat input image to a command string -local append_input_images = table.concat(append_image_table) -ngx.log(ngx.INFO , "Input images list : " , append_input_images) - --- Add path to output image filename -local append_output_image = save_upload_file_path .. output_image_uuid..".jpg "; -ngx.log(ngx.INFO , "Output image is : "..append_output_image) - --- Debug -ngx.log(ngx.INFO , '/usr/local/ImageMagick/bin/magick convert -append '..append_input_images..' '..append_output_image) - -local call_imagemagick_cmd = io.popen('/usr/local/ImageMagick/bin/magick convert -append '..append_input_images..' '..append_output_image) -local imagemagick_cmd_replay = call_imagemagick_cmd:read("*all") -ngx.log(ngx.INFO , imagemagick_cmd_replay) - - - - - - - - diff --git a/dev/nginx.conf b/dev/nginx.conf deleted file mode 100644 index 6992f69..0000000 --- a/dev/nginx.conf +++ /dev/null @@ -1,74 +0,0 @@ - -#user nobody; -worker_processes 1; - -#error_log logs/error.log; -#error_log logs/error.log notice; -error_log logs/error.log info; - -#pid logs/nginx.pid; - - - -events { - worker_connections 1024; -} - - -http { - lua_package_path "/usr/local/openresty/resty_funcs/?.lua;;"; - include mime.types; - default_type application/octet-stream; - - #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' - # '$status $body_bytes_sent "$http_referer" ' - # '"$http_user_agent" "$http_x_forwarded_for"'; - - #access_log logs/access.log main; - - sendfile on; - #tcp_nopush on; - - #keepalive_timeout 0; - keepalive_timeout 65; - - #gzip on; - - - server { - serer_name alchemy-studio.cn; # managed by Certbot - root /home/nginx/website; - index index.html; - - location /wy7of6ofMw.txt { - alias /home/nginx/website/wx_verify/wy7of6ofMw.txt; - } - - location / { - try_files $uri $uri/ /index.html =404; - } - - listen [::]:443 ssl ipv6only=on; # managed by Certbot - listen 443 ssl; # managed by Certbot - ssl_certificate /etc/letsencrypt/live/alchemy-studio.cn/fullchain.pem; # managed by Certbot - ssl_certificate_key /etc/letsencrypt/live/alchemy-studio.cn/privkey.pem; # managed by Certbot - include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot - ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot - - } - - server { - - listen 80 ; - listen [::]:80 ; - server_name alchemy-studio.cn; - - location / { - return 301 https://$host$request_uri; - } - } - - include /usr/local/openresty/nginx/conf.d/music-room.conf; - #include /usr/local/openresty/nginx/conf.d/resty_funcs.conf; -} - diff --git a/prod/conf.d/music-room.conf b/music-room.conf similarity index 100% rename from prod/conf.d/music-room.conf rename to music-room.conf diff --git a/prod/upload/README.md b/prod/upload/README.md deleted file mode 100644 index 1329bec..0000000 --- a/prod/upload/README.md +++ /dev/null @@ -1,33 +0,0 @@ -put `upload.lua` into: - -```bash -/usr/local/opt/openresty/nginx/resty_funcs -``` - -post file: - -```bash -$ curl --location --request POST 'localhost/upload' \ ---form '=@"/Users/weli/works/task_server/src/test/resources/file_example_JPG_100kB.jpeg"' -``` - -nginx config - -``` -/usr/local/etc/openresty/nginx.conf -``` - -``` -location /upload { - content_by_lua_file /usr/local/opt/openresty/nginx/resty_funcs/upload.lua; -} -``` - -enable log: - -``` -error_log /usr/local/etc/openresty/logs/error.log; -``` - - - diff --git a/test/test_curl.lua b/test/test_curl.lua deleted file mode 100644 index 5bfae5c..0000000 --- a/test/test_curl.lua +++ /dev/null @@ -1,8 +0,0 @@ -local curl_task = [[curl --location --request POST 'http://localhost:8080/api/v1/ts/create_task' \ ---header 'Content-Type: application/json' \ ---data-raw '{ - "data": ["abc", "def"], - "task_type": 1 -}']] - -os.execute(curl_task) diff --git a/test/test_magick.lua b/test/test_magick.lua deleted file mode 100644 index 9e5661f..0000000 --- a/test/test_magick.lua +++ /dev/null @@ -1,29 +0,0 @@ --- read from nginx var config -local magick = ngx.var.magick -ngx.log(ngx.ERR, 'var', magick) --- or use which command to get -if not magick then - local exec = io.popen("which magick") - local tmp = exec:read("*a") - magick = string.gsub(tmp, "%s+", "") - exec:close() -end -if not magick then - ngx.status = 500 - ngx.say("image magick not found.") - return -end - -ngx.say(magick) - - ---local origin = { --- "/Users/moicen/Music/alchemy/Song-of-joy.png", --- "/Users/moicen/Music/alchemy/You-and-me.png" ---} ---origin = table.concat(origin, " ") ---ngx.log(ngx.ERR, origin) ---local file = io.popen("/usr/local/bin/magick convert -append " .. origin .. " /tmp/combined.jpeg" ) ---local output = file:read("*all") ---file:close() ---ngx.say(output) \ No newline at end of file diff --git a/test/test_post.lua b/test/test_post.lua deleted file mode 100644 index d5eae4f..0000000 --- a/test/test_post.lua +++ /dev/null @@ -1,29 +0,0 @@ -local httpc = require("resty.http").new() - --- Single-shot requests use the `request_uri` interface. -local res, err = httpc:request_uri("http://127.0.0.1:8080/api/v1/ts/create_task", { - method = "POST", - headers = { - ["Content-Type"] = "application/json", - }, - body = [[ - { - "created_at": "2021-08-30T11:34:25.845915", - "created_by": "quarkus_test", - "data": { - "pics": [ - "23f64c00-14d3-4e8a-bc73-10bfe79cd172", - "66ea4c4f-6394-4f97-92ea-e5cde4061d05", - "4ea1df10-b3a9-4f3c-8687-7e12c029e17b" - ] - }, - "task_status": "PENDING", - "task_type": "UPLOAD_PICTURE", - "updated_at": "2021-08-30T11:34:25.845929", - "updated_by": "quarkus_test" -} - ]] -}) - -ngx.say(res.status) -ngx.say(err) diff --git a/test/test_re.lua b/test/test_re.lua deleted file mode 100644 index 755e386..0000000 --- a/test/test_re.lua +++ /dev/null @@ -1,10 +0,0 @@ ---local str = "form-data; name=\"files[]\"; filename=\"Song-of-joy.png\"" ---local ext = ngx.re.match(str, [[filename=".*\.(\w+)"]], "jo") ---print(ext) - -local str = [[image\/png]] -local ext = ngx.re.match(str, [[image\/(\w+)]]) -print(ext) - - - diff --git a/test/test_var.lua b/test/test_var.lua deleted file mode 100644 index 7629545..0000000 --- a/test/test_var.lua +++ /dev/null @@ -1,4 +0,0 @@ -ngx.log(ngx.INFO, "test -> ", "info") - -ngx.say('file dir...', ngx.var.tmp_file_dir) -ngx.say('task server...', ngx.var.task_server) \ No newline at end of file diff --git a/prod/upload/upload.lua b/upload.lua similarity index 100% rename from prod/upload/upload.lua rename to upload.lua