`
jk138
  • 浏览: 153830 次
  • 性别: Icon_minigender_1
  • 来自: 茂名
社区版块
存档分类
最新评论

手机照片上传

阅读更多

首先写好一个专门用于封装提交的信息的处理类

 

FormFile.java

package com.cnjmwl.util;

public class FormFile
{
  /* 上传文件的数据 */  
  private byte[] data;  
  /* 文件名称 */  
  private String filname;  
  /* 表单字段名称*/  
  private String formname;  
  /* 内容类型 */  
  private String contentType = "text/plain"; //需要查阅相关的资料  

  public FormFile(String filname, byte[] data, String formname, String contentType) {  
    this.data = data;  
    this.filname = filname;  
    this.formname = formname;  
    if(contentType!=null) this.contentType = contentType;  
  }  

  public byte[] getData() {  
    return data;  
  }  

  public void setData(byte[] data) {  
    this.data = data;  
  }  

  public String getFilname() {  
    return filname;  
  }  

  public void setFilname(String filname) {  
    this.filname = filname;  
  }  

  public String getFormname() {  
    return formname;  
  }  

  public void setFormname(String formname) {  
    this.formname = formname;  
  }  

  public String getContentType() {  
    return contentType;  
  }  

  public void setContentType(String contentType) {  
    this.contentType = contentType;  
  }  
}

  然后写android客户端提交到的方法

  String actionURl="http://192.168.1.79:6888/jmcustomer/placeOrderServlet";

 		   //String actionURl=HttpUtil.BASE_URL+"new";
		   Map<String, String> params=new HashMap<String, String>();
		   
		   //传个用户名
		   params.put("username", this.getIntent().getStringExtra("username"));
		   params.put("orderdesc", StringUtil.utf8ToUnicode(orderdesc.getText().toString()));
		   String contentType = "image/JPEG";
		   
		   
		 File file =new File("/data/data/test.jpg");
		byte[] buffer = new byte[1024];
		int len = -1;
		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
		 BufferedInputStream bufferedInputStream;
		try {
			bufferedInputStream = new BufferedInputStream(new FileInputStream(file));
			while ((len = bufferedInputStream.read(buffer)) != -1)
			{
				outStream.write(buffer, 0, len);
			}
			 data = outStream.toByteArray();
			outStream.close();
			bufferedInputStream.close();
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		//获取用户编辑照片的文件名
	    String   photoName=fileName.getText().toString();
	    if(photoName==null||photoName.trim().equals("")){
	    	photoName="default";
	    }
		// FormFile[] files=new FormFile[]{new FormFile("test.jpg",data,"file1",contentType)};
		 FormFile[] files=new FormFile[]{new FormFile(photoName+".jpg",mContent,"file1",contentType)};
		String result= post(actionURl, params, files);
		if(result.equals("1")){
			showAlert("提交成功!");
		}else{
			showAlert("提交失败!");
		}

 /**

 	   * 直接通过HTTP协议提交数据到服务器,实现表单提交功能 
 	   * @param actionUrl 上传路径 
 	   * @param params 请求参数 key为参数名,value为参数值 
 	   * @param file 上传文件 
 	   */  
 	  public static String post(String actionUrl, Map<String, String> params, FormFile[] files) {  
 	      try {             
 	          String BOUNDARY = "---------7d4a6d158c9"; //数据分隔线  
 	          String MULTIPART_FORM_DATA = "multipart/form-data";  
 	            
 	          URL url = new URL(actionUrl);  
 	          HttpURLConnection conn = (HttpURLConnection) url.openConnection();  
 	          conn.setDoInput(true);//允许输入  
 	          conn.setDoOutput(true);//允许输出  
 	          conn.setUseCaches(false);//不使用Cache  
 	          conn.setRequestMethod("POST");            
 	          conn.setRequestProperty("Connection", "Keep-Alive");  
 	          conn.setRequestProperty("Charset", "UTF-8");  
 	          conn.setRequestProperty("Content-Type", MULTIPART_FORM_DATA + "; boundary=" + BOUNDARY);  
 	    
 	          StringBuilder sb = new StringBuilder();  
 	            
 	          //上传的表单参数部分,格式请参考文章  
 	          for (Map.Entry<String, String> entry : params.entrySet()) {//构建表单字段内容  
 	              sb.append("--");  
 	              sb.append(BOUNDARY);  
 	              sb.append("\r\n");  
 	              sb.append("Content-Disposition: form-data; name=\""+ entry.getKey() + "\"\r\n\r\n");  
 	              sb.append(entry.getValue());  
 	              sb.append("\r\n");  
 	          }  
 	          DataOutputStream outStream = new DataOutputStream(conn.getOutputStream());  
 	          outStream.write(sb.toString().getBytes());//发送表单字段数据  
 	           
 	          //上传的文件部分,格式请参考文章  
 	          for(FormFile file : files){  
 	              StringBuilder split = new StringBuilder();  
 	              split.append("--");  
 	              split.append(BOUNDARY);  
 	              split.append("\r\n");  
 	              split.append("Content-Disposition: form-data;name=\""+ file.getFormname()+"\";filename=\""+ file.getFilname() + "\"\r\n");  
 	              split.append("Content-Type: "+ file.getContentType()+"\r\n\r\n");  
 	              outStream.write(split.toString().getBytes());  
 	              outStream.write(file.getData(), 0, file.getData().length);  
 	              outStream.write("\r\n".getBytes());  
 	          }  
 	          byte[] end_data = ("--" + BOUNDARY + "--\r\n").getBytes();//数据结束标志           
 	          outStream.write(end_data);  
 	          outStream.flush();  
 	          int cah = conn.getResponseCode();  
 	          if (cah != 200) throw new RuntimeException("请求url失败");  
 	          InputStream is = conn.getInputStream();  
 	          int ch;  
 	          StringBuilder b = new StringBuilder();  
 	          while( (ch = is.read()) != -1 ){  
 	              b.append((char)ch);  
 	          }  
 	          outStream.close();  
 	          conn.disconnect();  
 	          return b.toString();  
 	      } catch (Exception e) {  
 	          throw new RuntimeException(e);  
 	      }  
 	  } 
   
分享到:
评论

相关推荐

    手机图片上传

    手机图片上传

    html5手机端上传图片

    这是实现手机端图片上传的基础。FileReader接口用于读取文件内容,Blob对象则用于存储文件数据。 2. **** 在HTML中,`&lt;input type="file"&gt;`元素用于创建一个文件选择器,用户可以通过这个选择器选取本地文件。添加...

    手机上的图片文件传到计算机上后windows照片查看器无法显示此图片,计算机上内存不足,其它图片正常能打开.docx

    但如果手机拍摄或存储的图片采用了不常见的格式,如HEIC(iPhone默认的图片格式),可能会导致照片查看器无法识别。HEIC是一种高效的图片编码格式,需要特定的解码器来打开。 2. **系统设置和颜色管理**: - 控制...

    如何把手机中的照片传到qq空间.docx

    在上传照片的界面,找到之前创建的文件夹,比如“怎样把手机照片传到空间”,然后勾选你想上传的照片。你可以选择性上传一部分照片,也可以全选全部照片。 点击“开始上传”,等待上传过程完成。一旦所有的照片都...

    .net手机端移动端多图片h5上传案例代码

    在.NET技术框架下,开发移动端应用时,常常需要实现用户在手机端通过H5页面上传图片的功能。这个".net手机端移动端多图片h5上传案例...通过分析和学习这个示例,开发者可以快速掌握.NET环境下H5多图片上传的实现方式。

    Jquery移动手机图片上传

    `Jquery`作为一个广泛使用的JavaScript库,为Web开发者提供了丰富的功能,包括在移动设备上处理图片上传。本教程将详细介绍如何利用Jquery实现在iOS和Android设备上进行图片上传,并且支持图片的压缩功能,以降低...

    HTML5手机图片上传头像裁剪代码.zip

    HTML5手机图片上传头像裁剪代码是一种利用现代Web技术实现的交互式图像处理功能,主要应用于移动设备上的用户头像选择与定制。这个压缩包包含的资源是用于创建这样一个功能的JavaScript特效,特别是针对图片相册应用...

    PHP(TP5.0)+jq+ajax手机图片上传,支持裁切

    标题 "PHP(TP5.0)+jq+ajax手机图片上传,支持裁切" 描述的是一个使用PHP(ThinkPHP框架的5.0版本)结合jQuery(jq)和Ajax技术实现的手机图片上传功能,该功能还包含了图片裁切的功能。这个系统设计的主要目标是为...

    手机拍照或上传相册图片到网站php源代码

    这个程序允许用户通过他们的手机摄像头拍照或者选择相册中的图片,然后将这些图片上传到一个基于PHP的网站。在实现这个功能时,通常会用到以下关键知识点: 1. **表单上传**: - HTML表单:在`index.html`文件中,...

    asp手机网站拍照上传代码

    【ASP手机网站拍照上传代码】是针对移动设备用户设计的一款基于ASP技术的图片上传功能实现。这个源码允许用户直接通过手机摄像头拍照后上传图片,同时也支持从手机相册中选择图片进行上传,并且可以一次性上传多张...

    手机端多图片上传

    在移动应用开发中,"手机端多图片上传"是一个常见的功能需求,特别是在社交媒体、电子商务或者个人分享类的应用中。这个功能允许用户一次性选择并上传多张图片,极大地提高了用户体验。以下将详细介绍实现这一功能的...

    zyUpload批量上传php版手机端批量上传图片工具

    通过集成此插件,开发者可以快速地在网站上添加多图片上传功能,尤其对于手机端的网页应用,它能够很好地适应各种屏幕尺寸和触摸操作。 2. **基于PHP和jQuery** PHP是服务器端的脚本语言,用于处理上传请求、存储...

    input type=file 调取手机照相机和选择照片上传

    本文将深入探讨如何使用 `input type="file"` 激活手机的照相机功能以及选择图片上传。 首先,`&lt;input type="file"&gt;` 是HTML中的一个表单元素,它的主要作用是让用户选择本地文件。在默认情况下,点击这个元素会...

    html5+jquery+canvas 实现调用手机拍照上传图片

    在`canvasDemo-master`这个项目中,可能包含了实现上述功能的HTML、CSS和JavaScript代码,通过分析和学习这个示例,你可以深入理解如何结合HTML5、jQuery和Canvas来处理图片上传和旋转问题,这对于构建交互性强的...

    html5手机页面选择相册图片上传表单提交

    "html5手机页面选择相册图片上传表单提交"是移动Web开发中的一个重要功能,它允许用户直接从手机相册中选取图片并提交到服务器,极大地简化了用户操作流程。 一、HTML5的新特性:File API HTML5引入了File API,这...

    在html5网页中实现用手机相机拍照功能,并上传照片给后台.zip

    在HTML5中,实现手机相机拍照并上传照片给后台的功能主要涉及到两个关键API:`&lt;input type="file"&gt;`的`capture`属性和File API。下面将详细介绍这两个知识点及其相关应用。 1. `&lt;input type="file"&gt;`与`capture`...

    Vue项目实现手机端上传图片,使用于PC/Android/Ios

    基于Vue实现跨平台上传图片,pc端访问时上传图片资源,移动端访问时调用相册,可拍照和从相册里选择并在页面可进行预览。文档记录了java后端和vue前端两部分核心代码包括注释说明

    JQUERY图片批量上传,手机版可用

    "JQUERY图片批量上传,手机版可用" 这个主题聚焦于使用jQuery库来实现一个高效且适应移动端的多图片上传功能。jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画以及Ajax交互等任务,使得开发者...

    Android部分手机拍照后获取的图片被旋转问题的解决方法

    调用Android系统拍照功能后,三星手机拍摄后的照片被旋转了90度,横着拍给你变成竖的,竖的拍给你变成横的。其它品牌的手机都是正常的,就三星出现这个怪事。 在Android适配上,我原来一直以为国内的小米手机够奇葩...

    手机图片处理.zip

    所以我一直都是将手机照片拷贝到电脑里,用ACDSee之类的软件批量压缩后再上传到网盘。 视频也是利用压缩工具,将100MB的视频压缩到10MB左右后再上传(画质有一定损失,但也很清晰)。 图片压缩我用的ImageMagick...

Global site tag (gtag.js) - Google Analytics