android 上传图片到服务器Tomcat(Struts2)
生活随笔
收集整理的這篇文章主要介紹了
android 上传图片到服务器Tomcat(Struts2)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在做android開發的時候,有時你會用到圖片的上傳功能,在我的android項目中,我是選中圖片,點擊上傳多張圖片
android客戶端上傳圖片部分的代碼如下:
package com.example.myphotos.utils;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.util.Log;public class UploadUtil {private static final String TAG = "uploadFile";private static final int TIME_OUT = 10 * 1000; // 超時時間private static final String CHARSET = "utf-8"; // 設置編碼/*** 上傳文件到服務器* * @param file* 需要上傳的文件* @param RequestURL* 請求的rul* @return 返回響應的內容*/public static int uploadFile(File file, String RequestURL) {int res = 0;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) {/*** 當文件不為空時執行上傳*/DataOutputStream dos = new DataOutputStream(conn.getOutputStream());StringBuffer sb = new StringBuffer();sb.append(PREFIX);sb.append(BOUNDARY);sb.append(LINE_END);/*** 這里重點注意: name里面的值為服務器端需要key 只有這個key 才可以得到對應的文件* filename是文件的名字,包含后綴名*/sb.append("Content-Disposition: form-data; name=\"file\"; filename=\""+ file.getName() + "\"" + LINE_END);sb.append("Content-Type: application/octet-stream; charset="+ CHARSET + LINE_END);sb.append(LINE_END);dos.write(sb.toString().getBytes());InputStream is = new FileInputStream(file);byte[] bytes = new byte[1024];int len = 0;while ((len = is.read(bytes)) != -1) {dos.write(bytes, 0, len);}is.close();dos.write(LINE_END.getBytes());byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINE_END).getBytes();dos.write(end_data);dos.flush();/*** 獲取響應碼 200=成功 當響應成功,獲取響應的流*/res = conn.getResponseCode();Log.e(TAG, "response code:" + res);if (res == 200) {Log.e(TAG, "request success");InputStream input = conn.getInputStream();StringBuffer sb1 = new StringBuffer();int ss;while ((ss = input.read()) != -1) {sb1.append((char) ss);}result = sb1.toString();Log.e(TAG, "result : " + result);} else {Log.e(TAG, "request error");}}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return res;} }服務器段的代碼如下:
服務器端用的Struts2
package www.csdn.image;import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Random;import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest;import org.apache.commons.fileupload.DiskFileUpload; import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.Action; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport;/*** ImagesAction 2013-6-18 下午9:02:58** @author 喬曉松**/ public class ImagesAction extends ActionSupport {/****/private static final long serialVersionUID = 1L;public List<String> list = new ArrayList<String>();private File file;private String fileContentType;private String fileFileName;public File getFile() {return file;}public void setFile(File file) {this.file = file;}public String getFileContentType() {return fileContentType;}public void setFileContentType(String fileContentType) {this.fileContentType = fileContentType;}public String getFileFileName() {return fileFileName;}public void setFileFileName(String fileFileName) {this.fileFileName = fileFileName;}public List<String> getList() {return list;}public String httpAllImages() {String path = ServletActionContext.getServletContext().getRealPath("images");// System.out.println(path);File filePath = new File(path);File[] files = filePath.listFiles();for (int i = 0; i < files.length; i++) {File file = files[i];if (!file.isDirectory()) {String fileName = file.getName();String img = fileName.substring(fileName.lastIndexOf(".") + 1);if ("jpg".equals(img) || "jpeg".equals(img)|| "gif".equals(img) || "png".equals(img)) {list.add(fileName);}}}System.out.println(list.size());return "images";}@SuppressWarnings("deprecation")public String uploadFile() {System.out.println("-----------------");System.out.println(fileFileName + "------------------" + file.length());try {FileInputStream fis = new FileInputStream(file);String photospath = ServletActionContext.getRequest().getRealPath("photos");System.out.println(photospath);File fs = new File(photospath, fileFileName);FileOutputStream fos = new FileOutputStream(fs);int len = 0;byte[] buffer = new byte[1024];while ((len = fis.read(buffer)) != -1) {fos.write(buffer, 0, len);}fos.flush();fos.close();fis.close();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return "uploadfile";} <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"> <struts><include file="struts-constant.xml"></include><package name="test" namespace="/csdn" extends="json-default"><action name="ImagesAction_*" class="www.csdn.image.ImagesAction"method="{1}"><result name="images" type="json">list</result><result name="uploadfile"></result></action></package> </struts>?圖片上傳:http://topmanopensource.iteye.com/blog/1605238(有例子)。
http://blog.csdn.net/lmj623565791/article/details/23781773
轉載于:https://www.cnblogs.com/zhujiabin/p/4458423.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的android 上传图片到服务器Tomcat(Struts2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA 的 Date、Calendar
- 下一篇: C#输入输出