java端代码

import java.awt.image.BufferedImage;import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileUpload;import org.apache.commons.fileupload.FileUploadException;import org.apache.commons.fileupload.RequestContext;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;import org.apache.commons.fileupload.servlet.ServletRequestContext;public class SendServlet extends HttpServlet {private static final long serialVersionUID = -4332039959272188942L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {resp.setContentType("text/plain;charset=UTF-8");resp.setCharacterEncoding("utf-8");Map<String,Object> msgMap=new HashMap<String,Object>();msgMap.put("retMsg","非法请求");msgMap.put("retFlag","0");try {PrintWriter out = resp.getWriter();out.write(JSONUtil.convertObjectToJSON(msgMap));out.flush();out.close();} catch (IOException e) {e.printStackTrace();}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {resp.setContentType("text/plain;charset=UTF-8"); // 设置响应页面字符编码resp.setCharacterEncoding("utf-8");RequestContext requestContext = new ServletRequestContext(req);Map<String, String> msgMap = new HashMap<String, String>();if (FileUpload.isMultipartContent(requestContext)) {DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();ServletFileUpload fileUpload = new ServletFileUpload(diskFileItemFactory);//设置单个上传文件的最大尺寸(5M)fileUpload.setFileSizeMax(1024*1024*5);// 定义文本参数的key,valueString paramKey = null, paramValue = null;// 定义原图片接收List<Map<String, Object>> imgList = new ArrayList<Map<String, Object>>();// 定义图片存放路径String imgDir = "upload/images/";List items = new ArrayList();try {items = fileUpload.parseRequest(req);Iterator it = items.iterator();while (it.hasNext()) {FileItem fileItem = (FileItem) it.next();if (fileItem.isFormField()) {// 文本参数paramKey = fileItem.getFieldName();paramValue = fileItem.getString("UTF-8");if (paramKey.equals("id")) {topicComment.setUserId(Integer.parseInt(paramValue));} else if (paramKey.equals("name")) {topicComment.setContent(paramValue);}} else {// 图片文件if (fileItem.getName() != null && fileItem.getSize() != 0) {if(fileItem.getSize()> fileUpload.getFileSizeMax()){throw new FileUploadException("File size exceeds the limit");}File fullFile = new File(fileItem.getName());String _pre = StringUtil.buildUniqueStr();String imgName = _pre+ fullFile.getName().substring(fullFile.getName().lastIndexOf(".")).toLowerCase();File newFile = new File("D:\\"+ imgDir + imgName);if (!newFile.getParentFile().exists()) {newFile.getParentFile().mkdirs();}fileItem.write(newFile);   //写入图片到服务器上BufferedImage image = ImageIO.read(newFile);Map<String, Object> imgMap = new LinkedHashMap<String, Object>();imgMap.put("imgUrl", imgDir + imgName);imgMap.put("width", image.getWidth());imgMap.put("height", image.getHeight());imgList.add(imgMap);}}}msgMap.put("retMsg","成功");msgMap.put("retFlag","1");} catch (Exception e) {msgMap.put("retMsg","失败");msgMap.put("retFlag","0");}}else{msgMap.put("retMsg","失败");msgMap.put("retFlag","0");}try{PrintWriter pw=resp.getWriter();pw.write(JSONUtil.convertObjectToJSON(msgMap));pw.flush();pw.close();}catch(Exception e){e.printStackTrace();}}



模拟android客户端发送数据:

public class Test {/** * @param args */public static void main(String[] args) {String actionUrl = "http://192.168.2.189/servlet/sendTopic" ;Map<String,String> params = new HashMap<String ,String >() ;params.put ( "userId" , "2" ) ;params.put ( "tiebaId" , "1" ) ;Map<String,File> files = new HashMap<String ,File>() ;files.put ( "2.png" , new File("D:\\2.png")) ;files.put ( "1.png" , new File("D:\\1.png")) ;try{String str = post( actionUrl ,params , files ) ;System.out.println ( "str--->>>" + str ) ;}catch ( Exception e ){}}public static String post( String actionUrl ,Map < String , String > params , Map < String , File > files )throws IOException{String BOUNDARY = java.util.UUID.randomUUID ( ).toString ( ) ;String PREFIX = "--" , LINEND = "\r\n" ;String MULTIPART_FROM_DATA = "multipart/form-data" ;String CHARSET = "UTF-8" ;URL uri = new URL ( actionUrl ) ;HttpURLConnection conn = ( HttpURLConnection ) uri.openConnection ( ) ;conn.setReadTimeout ( 5 * 1000 ) ; // 缓存的最长时间conn.setDoInput ( true ) ;// 允许输入conn.setDoOutput ( true ) ;// 允许输出conn.setUseCaches ( false ) ; // 不允许使用缓存conn.setRequestMethod ("POST") ;conn.setRequestProperty ( "connection" , "keep-alive" ) ;conn.setRequestProperty ( "Charsert" , "UTF-8" ) ;conn.setRequestProperty ( "Content-Type" , MULTIPART_FROM_DATA+ ";boundary=" + BOUNDARY ) ;// 首先组拼文本类型的参数StringBuilder sb = new StringBuilder ( ) ;for ( Map.Entry < String , String > entry : params.entrySet ( ) ){sb.append ( PREFIX ) ;sb.append ( BOUNDARY ) ;sb.append ( LINEND ) ;sb.append ( "Content-Disposition: form-data; name=\""+ entry.getKey ( ) + "\"" + LINEND ) ;sb.append ( "Content-Type: text/plain; charset="+ CHARSET + LINEND ) ;sb.append ( "Content-Transfer-Encoding: 8bit" + LINEND ) ;sb.append ( LINEND ) ;sb.append ( entry.getValue ( ) ) ;sb.append ( LINEND ) ;}DataOutputStream outStream = new DataOutputStream (conn.getOutputStream ( ) ) ;outStream.write ( sb.toString ( ).getBytes ( ) ) ;// 发送文件数据if ( files != null )for ( Map.Entry < String , File > file : files.entrySet ( ) ){StringBuilder sb1 = new StringBuilder ( ) ;sb1.append ( PREFIX ) ;sb1.append ( BOUNDARY ) ;sb1.append ( LINEND ) ;sb1.append ( "Content-Disposition: form-data; name=\"file\"; filename=\""+ file.getKey ( ) + "\"" + LINEND ) ;sb1.append ( "Content-Type: application/octet-stream; charset="+ CHARSET + LINEND ) ;sb1.append ( LINEND ) ;outStream.write ( sb1.toString ( ).getBytes ( ) ) ;InputStream is = new FileInputStream (file.getValue ( ) ) ;byte [ ] buffer = new byte [ 1024 ] ;int len = 0 ;while ( ( len = is.read ( buffer ) ) != - 1 ){outStream.write ( buffer , 0 , len ) ;}is.close ( ) ;outStream.write ( LINEND.getBytes ( ) ) ;}// 请求结束标志byte [ ] end_data = ( PREFIX + BOUNDARY + PREFIX + LINEND ).getBytes ( ) ;outStream.write ( end_data ) ;outStream.flush ( ) ;// 得到响应码int res = conn.getResponseCode ( ) ;InputStream in = conn.getInputStream ( ) ;StringBuilder sb2=null;if ( res == 200 ){int ch ; sb2 = new StringBuilder ( ) ;while ( ( ch = in.read ( ) ) != - 1 ){sb2.append ( ( char ) ch ) ;}}outStream.close ( ) ;conn.disconnect ( ) ;return new String(sb2.toString().getBytes("ISO-8859-1"),"UTF-8") ;}}



更多相关文章

  1. Android 实现图片的放大缩小及左右滑动(说明书效果)
  2. android图片压缩 —— 2
  3. MUI调用自定义插件(Android)
  4. Android长按imageview把图片保存到本地
  5. Android RadioButton 图片位置和大小
  6. Android 自定义Dialog时出现成员变量为null的问题
  7. Android 实现图片闪烁效果
  8. Android 调用相册或相机选择图片
  9. android各种图片获取路径的方式

随机推荐

  1. 关于android UDP 客户端与delphi UDP服务
  2. Android Exported service does not requ
  3. android 状态栏和导航栏(status and navi
  4. 无标题文章
  5. Android中改变Dialog背景透明度
  6. android 文本框实现搜索和清空效果
  7. 【Android不太基础】换个思路来监听home
  8. android的crash log
  9. android下载的进度条
  10. 使用Android Studio搭建Android集成开发