package com.itap.voiceemoticon.util; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; public class FileUploadUtil { /** * 上传文件至Server的方法 * * @param urlStr 服务器对应的路径 * @param serverFileName 上传服务器后在服务器上的文件名称 如:image.jpg * @param uploadFile 要上传的文件路径 如:/sdcard/a.jpg */ public void uploadFile(String urlStr, String serverFileName, File uploadFile) { String end = "\r\n"; String twoHyphens = "--"; String boundary = "*****"; try { URL url = new URL(urlStr); HttpURLConnection con = (HttpURLConnection)url.openConnection(); /* 允许Input、Output,不使用Cache */ con.setDoInput(true); con.setDoOutput(true); con.setUseCaches(false); /* 设置传送的method=POST */ con.setRequestMethod("POST"); /* setRequestProperty */ con.setRequestProperty("Connection", "Keep-Alive"); con.setRequestProperty("Charset", "UTF-8"); con.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); /* 设置DataOutputStream */ DataOutputStream ds = new DataOutputStream(con.getOutputStream()); ds.writeBytes(twoHyphens + boundary + end); ds.writeBytes("Content-Disposition: form-data; " + "name=\"file1\";filename=\"" + serverFileName + "\"" + end); ds.writeBytes(end); /* 取得文件的FileInputStream */ FileInputStream fStream = new FileInputStream(uploadFile); /* 设置每次写入1024bytes */ int bufferSize = 1024; byte[] buffer = new byte[bufferSize]; int length = -1; /* 从文件读取数据至缓冲区 */ while ((length = fStream.read(buffer)) != -1) { /* 将资料写入DataOutputStream中 */ ds.write(buffer, 0, length); } ds.writeBytes(end); ds.writeBytes(twoHyphens + boundary + twoHyphens + end); /* close streams */ fStream.close(); ds.flush(); /* 取得Response内容 */ InputStream is = con.getInputStream(); int ch; StringBuffer b = new StringBuffer(); while ((ch = is.read()) != -1) { b.append((char)ch); } /* 将Response显示于Dialog */ System.out.println("FileUpload Result = " + b.toString()); /* 关闭DataOutputStream */ ds.close(); } catch (Exception e) { e.printStackTrace(); } } }