Java实现图片上传与压缩工具类
"图片上传压缩工具类" 这个Java代码实现了一个名为`UploadUtil`的类,主要用于处理图片的上传和压缩。它适用于Android环境,帮助开发者将图片高效地上传到服务器。作者`springsky`提供了邮箱和QQ联系方式,表明这个类是开源或者可以用于合作交流的。 `UploadUtil`类的核心功能集中在`uploadFile`方法中,该方法接受两个参数:一个是待上传的图片文件路径`file`,另一个是服务器的请求URL`RequestURL`。这个方法采用了`multipart/form-data`的HTTP请求格式,这是上传文件时常用的一种方式。 在`uploadFile`方法内部,首先生成一个随机的分隔符`BOUNDARY`,用于区分不同的表单数据部分。然后定义了字符串常量`PREFIX`、`LINE_END`以及字符集`CHARSET`。`TIME_OUT`定义了网络连接的超时时间,这里是10秒。 接着,代码创建`URL`对象并建立到服务器的连接。使用`HttpURLConnection`来处理网络请求,设置请求方法为POST,并启用允许输入和输出流。通过设置`URLConnection`的请求头,包括Content-Type(指定multipart/form-data类型)和边界信息。 当连接建立后,`UploadUtil`通过输入输出流处理文件上传。它读取图片文件并将其转化为字节数组,然后将这些数据写入到HTTP请求的数据流中。在这个过程中,利用`DataOutputStream`写入文件的二进制数据,以及必要的边界和换行符,确保数据格式正确。 为了进行图片压缩,虽然这段代码没有直接展示压缩逻辑,但我们可以推测,可能在调用`uploadFile`之前,开发者会先使用`BitmapFactory`对图片进行解码,并通过`Bitmap`的压缩方法(如`compress()`)来减小图片的大小,然后再调用`uploadFile`进行上传。这样可以减少上传的数据量,节省网络带宽,同时降低服务器存储压力。 `UploadUtil`是一个方便实用的工具类,它简化了Android应用中图片上传的流程,支持文件压缩,提高了上传效率,并且具有良好的可扩展性,可以适应不同的服务器接口需求。对于处理大量图片上传的移动应用来说,这样的工具类是不可或缺的。
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.UUID;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
/**
*
* 上传工具类上传压缩;
* @author spring sky
* Email:vipa1888@163.com
* QQ:840950105
* MyName:石明政
*/
public class UploadUtil {
private static final String TAG = "uploadFile";
private static final int TIME_OUT = 10*1000; //超时时间
private static final String CHARSET = "utf-8"; //设置编码
* android上传文件到服务器
* @param file 需要上传的文件
* @param RequestURL 请求的rul
* @return 返回响应的内容
*/
public static String uploadFile(String file,String RequestURL)
{
String result = null;
String BOUNDARY = UUID.randomUUID().toString(); //边界标识 随机生成
String PREFIX = "--" , LINE_END = "\r\n";
String CONTENT_TYPE = "multipart/form-data"; //内容类型
try {
URL url = new URL(RequestURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(TIME_OUT);
conn.setConnectTimeout(TIME_OUT);
conn.setDoInput(true); //允许输入流
conn.setDoOutput(true); //允许输出流
conn.setUseCaches(false); //不允许使用缓存
conn.setRequestMethod("POST"); //请求方式
conn.setRequestProperty("Charset", CHARSET); //设置编码
conn.setRequestProperty("connection", "keep-alive");
conn.setRequestProperty("Content-Type", CONTENT_TYPE + ";boundary=" + BOUNDARY);
if(file!=null){
/**
* 当文件不为空,把文件包装并且上传
*/
剩余6页未读,继续阅读
- 粉丝: 17
- 资源: 16
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展