上传文件之至客户端处理http请求

Android客户端主要代码:

public ImageHttp(Context context) {
		super(context);
		filePath = context.getCacheDir().getAbsolutePath();
	}

	public void uploadUserImg(Bitmap bitmap,
			IHttpSenderCallBack<String> callback) {
		this.callback = callback;
		File file = getFile(bitmap);
		// 注意与服务端协商
		if (file == null) {
			return;
		}
		List<Parameter> parameters = new ArrayList<Parameter>();
		parameters.add(new Parameter("file", file));
		uploadFile("uploadImg", parameters);
	}

	private File getFile(Bitmap bitmap) {
		File file = null;
		String path = filePath + "/image.jpg";
		if (bitmap != null && !StringUtil.emptyOrNull(path)) {
			try {
				FileOutputStream out = new FileOutputStream(path);
				bitmap.compress(Bitmap.CompressFormat.JPEG, 60, out);
				out.flush();
				out.close();

				file = new File(path);
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return file;
	}
protected String uploadFile(String methodName, List<Parameter> parameter) {
		String errorMsg = "";

		try {
			String serviceUrl = getPostUrl(methodName);
			HttpPost httpPost = new HttpPost(serviceUrl);
			//采用http4包,不需要再添加  multipart/form-data表单 ,切记,这儿耽搁了好久
			MultipartEntity mpEntity = new MultipartEntity(
					HttpMultipartMode.BROWSER_COMPATIBLE); // 文件传输
			if (parameter != null && !parameter.isEmpty()) {
				for (int i = 0; i < parameter.size(); i++) {
					Parameter p = parameter.get(i);
					if ("file".equals(p.getKey())) {
						mpEntity.addPart(p.getKey(),
								new FileBody(((File) p.getValue())));
					} else {
						mpEntity.addPart(p.getKey(), new StringBody(p
								.getValue().toString()));
					}
				}
				httpPost.setEntity(mpEntity);
			}

			HttpClient httpclient = new DefaultHttpClient();
			httpclient.getParams().setParameter(
					CoreConnectionPNames.CONNECTION_TIMEOUT, TIMEOUT);
			httpclient.getParams().setParameter(
					CoreConnectionPNames.SO_TIMEOUT, TIMEOUT);
			HttpResponse httpResponse = httpclient.execute(httpPost);
			String result = "";
			int status = httpResponse.getStatusLine().getStatusCode();
			LogUtil.d("httpResponseCode--------->" + status);
			if (status == HttpStatus.SC_OK) {
				result = EntityUtils.toString(httpResponse.getEntity());
			}
			parseProperty_(result, methodName);
			result = "";
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (Exception e) {
			e.printStackTrace();
		}

		return errorMsg;
	}
时间: 2025-01-31 14:39:52

上传文件之至客户端处理http请求的相关文章

通过Ajax方式上传文件,使用FormData进行Ajax请求

通过传统的form表单提交的方式上传文件: 1 2 3 4 5 6 7 8 9 <form id= "uploadForm" action= "http://localhost:8080/cfJAX_RS/rest/file/upload" method= "post" enctype ="multipart/form-data">       <h1 >测试通过Rest接口上传文件 </h1&g

上传文件,使用FormData进行Ajax请求,jsoncallback

通过传统的form表单提交的方式上传文件: <form id= "uploadForm" action= "http://localhost:8080/cfJAX_RS/rest/file/upload" method= "post" enctype ="multipart/form-data"> <h1 >测试通过Rest接口上传文件 </h1> <p >指定文件名: <

H5 通过Ajax方式上传文件,使用FormData进行Ajax请求

通过传统的form表单提交的方式上传文件: Html代码   <form id= "uploadForm" action= "http://localhost:8080/cfJAX_RS/rest/file/upload" method= "post" enctype ="multipart/form-data"> <h1 >测试通过Rest接口上传文件 </h1> <p >指定

[C#]通过Http报文上传文件

前言 这段时间做C#客户端项目时,在网上找到一个用Http请求实现文件上传的方法,实测有效. 在讲解如何实现Http上传文件之前,不妨先了解一下Http上传文件报文是什么样的.相信看了报文结构,有利于了解代码的实现过程. 下图是我自己的程序上传文件时时,用wireshark抓取的包内容. 可以看到,这个Http报文结构其实并不复杂. 需要注意的是,这个报文中有一个boundary,这是一个识别文件流的边界,用来标识文件开始和结尾的位置. 接下来,我将一步步说明如何封装Http上传文件报文. C#

Android端通过HttpURLConnection上传文件到服务器

一:实现原理 最近在做Android客户端的应用开发,涉及到要把图片上传到后台服务器中,自己选择了做Spring3 MVC HTTP API作为后台上传接口,android客户端我选择用HttpURLConnection来通过form提交文件数据实现上传功能,本来想网上搜搜拷贝一下改改代码就好啦,发现根本没有现成的例子,多数的例子都是基于HttpClient的或者是基于Base64编码以后作为字符串来传输图像数据,于是我不得不自己动手,参考了网上一些资料,最终实现基于HttpURLConnect

PHP上传文件详解

1.上传文件使用的提交方式和请求Content-type POST提交方式,原始的form表单提交请加上enctype="multipart/form-data" 2.MAX_FILE_SIZE 隐藏字段(单位为字节) 必须放在文件输入字段之前,其值为接收文件的最大尺寸.这是对浏览器的一个建议,PHP 也会检查此项.在浏览器端可以简单绕过此设置,因此不要指望用此特性来阻挡大文件.实际上,PHP 设置中的上传文件最大值是不会失效的.但是最好还是在表单中加上此项目,因为它可以避免用户在花时

servlet上传文件(四)

1.servlet上传文件 servlet上传文件就是将客户端的文件上传到服务器端. 向服务器发送数据时,客户端发送的http请求正文采用"multipart/form-data"数据类型,他表示复杂的多个子部分的复合表单. 为了简化"multipart/form-data"数据的处理过程.可以使用Apache组织提供是的两个开源包来来实现上传. fileupload软件包(commons-fileupload-1.2.1.jar),负责文件上传的软件包. io软件

【转】JSP使用上传文件,并生产高清缩略图示例

原文地址:http://blog.csdn.net/yakson/article/details/9875731 前言 刚开始本来只想来测试一下Thumbnails生成缩略图的效果的,顺便来学一下jsp文件,开始没有使用commons-fileupload上 传组件,自己用纯jsp代码来编写,过程相当曲折.所以就不建议大家去编写纯JSP的上传代码了,想写的可以参考下commons-fileupload 的源码,里面很详细. 一.JSP上传文件 大家都知道,上传文件是以二进制上传的,这样可以让文件

[iOS 多线程 &amp; 网络 - 2.11] - ASI框架上传文件

A.ASI的上传功能基本使用 1.实现步骤 (1)创建请求 使用ASIFormDataRequest (2)设置上传文件路径 (3)发送请求 2.上传相册相片 UIImagePickerController用来选择图片 设置图片来源,可以选择相册 使用代理 UIImagePickerControllerDelegate方法,选择完成之后取得相片 1 // 2 // ViewController.m 3 // ASIUploadDemo 4 // 5 // Created by hellovoid