[多文件上传三]利用UrlEncodedFormEntity表单实现

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

import com.lxb.uploadwithprogress.tool.Base64Coder;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.ThumbnailUtils;
import android.util.Log;

/**
 * UrlEncodedFormEntity上传
 */
public class HttpUrlEncodedFormEntityPost {
	/**
	 * 上传
	 * @param pathList
	 */
	public static void upload(List<String> pathList) {
		String files = "FileUpload:";
		for (int i = 0; i < pathList.size(); i++) {
			Log.i("HttpUrlEncodedFormEntityPost","filePath:"+pathList.get(i));
			//根据路径生成一个Bitmap
	                Bitmap  tBitmap = convertToBitmap(pathList.get(i),400,400);
	                //把Bitmap写进流里面
	                ByteArrayOutputStream stream = new ByteArrayOutputStream();
	                tBitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
	                //把流转化为数组
			byte[] b = stream.toByteArray();
			// 将图片流以字符串形式存储下来
			String file = new String(Base64Coder.encodeLines(b));
			//设置一条分割线
			files+="---------------------------7da2137580612";
			//累加每一个文件转化成的String数据
			files+=file;
		}

		   
		HttpClient client = new DefaultHttpClient();
		// 设置上传参数
		List<NameValuePair> formparams = new ArrayList<NameValuePair>();
		formparams.add(new BasicNameValuePair("files", files));
		HttpPost post = new HttpPost("http://10.147.142.78:8080/FileUploadServlet/FileUpload?TAG=UEFE");
		UrlEncodedFormEntity entity;
		try {
			entity = new UrlEncodedFormEntity(formparams, "UTF-8");
			post.addHeader("Accept","text/javascript, text/html, application/xml, text/xml");
			post.addHeader("Accept-Charset", "GBK,utf-8;q=0.7,*;q=0.3");
			post.addHeader("Accept-Encoding", "gzip,deflate,sdch");
			post.addHeader("Connection", "Keep-Alive");
			post.addHeader("Cache-Control", "no-cache");
			post.addHeader("Content-Type", "application/x-www-form-urlencoded");
			post.setEntity(entity);
			HttpResponse response = client.execute(post);
			Log.i("HttpUrlEncodedFormEntityPost","StatusCode: " + response.getStatusLine().getStatusCode());
			HttpEntity e = response.getEntity();
			Log.i("HttpUrlEncodedFormEntityPost","response :"+EntityUtils.toString(e));
			if (200 == response.getStatusLine().getStatusCode()) {
				Toast.makeTast(Activity,"上传完成",1000).show;
			} else {
				Toast.makeTast(Activity,"上传失败",1000).show();
			}
			client.getConnectionManager().shutdown();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 根据路径生成一个Bitmap
	 * @param path
	 * @param w 指定宽
	 * @param h 指定高
	 * @return
	 */
	public static Bitmap convertToBitmap(String path, int w, int h) {
              BitmapFactory.Options opts = new BitmapFactory.Options();
              // 设置为ture只获取图片大小
              opts.inJustDecodeBounds = true;
              // 返回为空
              BitmapFactory.decodeFile(path, opts);
              int width = opts.outWidth;
              int height = opts.outHeight;
              int inSampleSize = 1; 
              if (height > w || width > h) {  
                  if (width > height) {  
                      inSampleSize = Math.round((float)height / (float)h);  
                  } else {  
                      inSampleSize = Math.round((float)width / (float)w);  
                  } 
              }
              opts.inSampleSize = inSampleSize;
              opts.inJustDecodeBounds = false;
              
              return BitmapFactory.decodeFile(path, opts);
         }
}

需要一个 Base64Coder.java

使用方法

List<String> filePathList = new ArrayList<String>();
filePathList.add(Environment.getExternalStorageDirectory()+ "/baidu/cache/image/" + "12778991134.png");
filePathList.add(Environment.getExternalStorageDirectory()+ "/baidu/cache/image/" + "123457894146.png");

new Thread(new Runnable() {
    public void run() {
        HttpUrlEncodedFormEntityPost.upload(filePathList);
    }
}).start();
时间: 2024-10-13 05:23:18

[多文件上传三]利用UrlEncodedFormEntity表单实现的相关文章

jqm文件上传,上传图片,jqm的表单操作,jqm的ajax的使用,jqm文件操作大全,文件操作demo

最近在论坛中看到,在使用html5中上传图片或文件,出现各种问题.这一方面,我也一直没有做过,今天就抽出了一点时间来学习一下.现在的示例已经ok了,我就给大家分享一下,希望对大家有帮助. 好吧,我们先看看效果截图吧: 还行吧,来看页面代码: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <h

文件上传三:base64编码上传

介绍三种上传方式: 文件上传一:伪刷新上传 文件上传二:FormData上传 文件上传三:base64编码上传 Flash的方式也玩过,不喜欢不拿来说了. 优点: 1.浏览器可以马上展示图像,不需要先上传到服务端,减少服务端的垃圾图像 2.前端可以压缩.处理后上传到服务端,减少传输过程中的等待时间和服务器压力 缺点: 1.生成编码后保存成图片,倘若不做处理,会比原来的图片容量大,具体原因,搜索关键词:Base64编码为什么会使数据量变大 2.图片越大生成的编码越多,编码越多开发者工具中查看它时卡

文件上传三:FormData上传

介绍三种上传方式: 文件上传一:伪刷新上传 文件上传二:FormData上传 文件上传三:base64编码上传 Flash的方式也玩过,不喜欢不拿来说了. 等待编辑...

[多文件上传一]利用httpmime.jar实现

import java.io.File; import java.nio.charset.Charset; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.mime.content.Fil

HTML5的 input:file上传 样式美化及表单异步提交

样式美化请看博客:css input[type=file] 样式美化,input上传按钮美化 input file上传按钮的美化思路是,先把之前的按钮透明度opacity设置为0,然后,外层用div包裹,就实现了美化功能. DOM结构: <a href="javascript:;" class="a-upload"> <input type="file" name="" id="">

node07---post请求、表单提交、文件上传

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form action="dopost" method="post" enctype="multipart/fo

Android volley 解析(三)之文件上传篇

前面我们讲了如何通过 volley 实现表单的提交,而这篇文章跟上一篇衔接很大,如果没有看上一篇 blog 的朋友,建议先去看看 Android Volley解析(二)之表单提交篇 因为文件上传实质就是表单的提交,只不过它提交的数据包含文件类型,接下来还是按照表单提交的套路来分析. 数据格式 这里我们通过图片上传的案例来分析,其他文件也是同样的实现方式:以下是我在传图网传图时,上传的数据格式,先来分析一下 POST http://chuantu.biz/upload.php HTTP/1.1 H

云控后台系统 经验总结(表单和文件上传等)

1. qq emoji替换 接收到这样的字符串,通过正则匹配到每组方括号然后进行替换 var _str = i.content.replace(/\[.{1,3}\]/g, (str) => { //i.content为遍历出来的消息记录 var index; Object.keys(faceCode).forEach((key, _index) => { //faceCode为字符串与样式对应的关系,也可以通过参数去和后台约定好,不用这样查找 if (key === str) { index

asp.net大文件上传解决方案

以ASP.NET Core WebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API ,包括文件的上传和下载. 准备文件上传的API #region 文件上传  可以带参数 [HttpPost("upload")] public JsonResult uploadProject(IFormFile file, string userId) { if (file != null) { var fileDir = "D:\\aaa"