linux下 nginx+nginx_upload_module+GraphicsMagick 上传并压缩照片(java)
来源:互联网 发布:数字软件下载 编辑:程序博客网 时间:2024/06/11 02:40
一、使用工具:
nginx-1.8.1.tar.gz
nginx_upload_module-2.2.0.tar.gz
openssl-1.0.2h.tar.gz
pcre-8.37.tar.gz
zlib-1.2.8.tar.gz
GraphicsMagick-1.3.22.tar.gz
apache-tomcat-7.0.47.tar.gz
由于使用的是java语音,基本的配置就不说了。
二、大致记录一下安装过程:
1、解压.tar.gz文件
tar -zxvf pcre-8.37.tar.gz
2、配置
./configure
3、编译
make
4、安装
make install
在安装过程中需要注意的事项:
1、安装的版本需要特别注意。我曾经安装的openssl-fips-2.0.12.tar.gz,nginx_upload_module-2.0.11.tar.gz这两个版本,出现各种无解的问题。
2、nginx的安装配置:
./configure --with-pcre=../pcre-8.37--with-zlib=../zlib-1.2.8 --with-openssl=/home/openssl-1.0.2h --with-http_ssl_module --add-module=/home/nginx_upload_module-2.2.0
2、安装nginx_upload_module-2.2.0.tar.gz时需要下载补丁davromaniak.txt
cd/home/nginx_upload_module-2.2.0
patchngx_http_upload_module.c davromaniak.txt
3、GraphicsMagick在安装过程中需要支持jpg,png格式:
yuminstall -y libpng-devel libpng
yuminstall -y libjpeg-devel libjpeg
三、nginx的上传配置文件
<span style="font-size:18px;">server{ listen 9001; server_name 127.0.0.1; client_max_body_size 50m;proxy_request_buffering off;location /upload { #上传完成后端接受处理文件 upload_pass /img_server/upload; upload_store /home/upload;#上传文件夹 upload_cleanup 400 404 499 500-505; upload_limit_rate 0;# 限制上传速度 upload_store_access user:rw; upload_set_form_field $upload_field_name.name "$upload_file_name"; upload_set_form_field $upload_field_name.content_type "$upload_content_type"; upload_set_form_field $upload_field_name.path "$upload_tmp_path"; upload_aggregate_form_field "${upload_field_name}_md5" $upload_file_md5;#md5 upload_aggregate_form_field "${upload_field_name}_size" $upload_file_size;#文件大小 upload_pass_form_field "^submit$|^description$"; #如果希望把所有的表单字段都传给后端可以用 upload_pass_form_field "^.*$"; upload_pass_args on;}location /{proxy_pass http://127.0.0.1:8080;#proxy_intercept_errors on;proxy_set_header REMOTE_ADDR $remote_addr;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}access_log /usr/local/nginx/logs/img.log;}</span>
注:upload_pass:为后台处理的路径,需要通过代理服务器转到tomcat服务器中。
四、Java后台得到上传文件的数据方法:
<span style="font-size:14px;"> try { sis = request.getInputStream(); int a = 0; int k = 0; String s = ""; while ((a = sis.readLine(b, 0, b.length)) != -1) { s = new String(b, 0, a); if ((k = s.indexOf("name=\"")) != -1) { String fieldName =s.substring(k + 6, s.length() - 3); sis.readLine(b, 0, b.length); StringBufferfieldValue = new StringBuffer(b.length); while ((a = sis.readLine(b, 0, b.length)) != -1) { s = new String(b, 0, a - 2); if ((b[0] == 45)&& (b[1] == 45)&& (b[2] == 45)&& (b[3] == 45)&& (b[4] == 45)){ break; } else { fieldValue.append(s); } } System.out.println(fieldName+ "---->" + fieldValue.toString()); args.put(fieldName,fieldValue.toString()); } } catch (Exception e) { e.getStackTrace(); }</span>
注:上传必须是POST方式(enctype="multipart/form-data")
五、GraphicsMagick对缓存文件做压缩处理
<span style="font-size:14px;">public static String saveMinPhoto(StringsrcPath, String toPath, int width, int height) throws Exception { System.out.println("----------------saveMinPhoto--------------"); Operation op = new Operation(); ConvertCmd cmd = new ConvertCmd(true); try { op.addImage(srcPath); op.addRawArgs("-sample", width + "x" + height + ">"); op.addRawArgs("-gravity", "center"); op.addRawArgs("-quality", "100"); op.addImage(toPath); cmd.run(op); } catch (Exception e) { System.out.println("报错:" + e.getMessage()); e.printStackTrace(); File file = new File(srcPath); if (file.exists()) { file.delete(); } return "上传失败"; } return "上传成功"; }</span>
没有将全过程都写下了,只是记录主要的部分和我遇到的问题及其解决方法,还有部分一时想不起来。
- linux下 nginx+nginx_upload_module+GraphicsMagick 上传并压缩照片(java)
- nginx 安装 nginx_upload_module
- Linux下安装GraphicsMagick
- linux下安装GraphicsMagick
- java 上传并压缩图片
- linux下GraphicsMagick 的安装
- nginx上传模块nginx_upload_module和nginx_uploadprogress_module模块进度显示,如何传递GET参数等。
- 上传照片并显示
- 上传照片并显示
- js,angularjs 图片上传服务器,并解决照片旋转问题,前端图片压缩上传
- Linux下定时切割Nginx访问日志并打包压缩的Shell脚本
- android 拍照并压缩照片
- JAVA读取压缩包并上传文件
- java 上传图片 并压缩图片大小
- java 上传图片 并压缩图片大小
- Linux下安装JDK+Tomcat+APR+GraphicsMagick
- linux下安装nginx并启动
- iOS 上传照片到服务器 获取相册和拍照功能的照片 照片压缩上传
- IE下兼容CSS3属性(或IE兼容box-shadow)方法
- 一个设置button上字体的封装
- addTextChangedListener(文本监听)参数解释及实现EditText字数监听
- TortoiseSVN安装正常,完成后bin目录下没有svn.exe
- Github使用教程
- linux下 nginx+nginx_upload_module+GraphicsMagick 上传并压缩照片(java)
- Elasticsearch 查询使用
- 建议65:总是处理未捕获的异常
- 一分钟实现动态模糊效果(毛玻璃)
- 数组的地址
- C++位操作
- iOS 相关知识链接
- iOS与H5交互的方案
- 广播接收者的两种注册方式