为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

android 上传文件

2018-04-27 11页 doc 30KB 53阅读

用户头像

is_005190

暂无简介

举报
android 上传文件android 上传文件 /* 上传文件至Server,uploadUrl:接收文件的处理页面 */ public String uploadFile(Bitmap src, String uploadUrl, String filename) { String end = "\r\n"; String twoHyphens = "--"; String boundary = "******"; try { URL url = new URL(uploadUrl); HttpURLConnection http...
android 上传文件
android 上传文件 /* 上传文件至Server,uploadUrl:接收文件的处理页面 */ public String uploadFile(Bitmap src, String uploadUrl, String filename) { String end = "\r\n"; String twoHyphens = "--"; String boundary = "******"; try { URL url = new URL(uploadUrl); HttpURLConnection httpURLConnection = (HttpURLConnection) url .openConnection(); // 设置每次传输的流大小,可以有效防止手机因为内存不足崩溃 // 此方法用于在预先不知道内容长度时启用没有进行内部缓冲的 HTTP 请求 正文的流。 httpURLConnection.setChunkedStreamingMode(128 * 1024);// 128K // 允许输入输出流 httpURLConnection.setDoInput(true); httpURLConnection.setDoOutput(true); httpURLConnection.setUseCaches(false); // 使用POST方法 httpURLConnection.setRequestMethod("POST"); httpURLConnection.setRequestProperty("Connection", "Keep-Alive"); httpURLConnection.setRequestProperty("Charset", "UTF-8"); httpURLConnection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); DataOutputStream dos = new DataOutputStream( httpURLConnection.getOutputStream()); dos.writeBytes(twoHyphens + boundary + end); dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\"; filename=\"" + filename + "\"" + end); dos.writeBytes(end); // 将要上传的内容写入流中 InputStream srcis = Function.Bitmap2IS(src); byte[] buffer = new byte[8192]; // 8k int count = 0; // 读取文件 while ((count = srcis.read(buffer)) != -1) { dos.write(buffer, 0, count); } srcis.close(); dos.writeBytes(end); dos.writeBytes(twoHyphens + boundary + twoHyphens + end); dos.flush(); InputStream is = httpURLConnection.getInputStream(); InputStreamReader isr = new InputStreamReader(is, "utf-8"); BufferedReader br = new BufferedReader(isr); // 上传返回值 String sl; String result=""; while((sl = br.readLine()) != null) result = result+sl; br.close(); is.close(); return result; //dos.close(); } catch (Exception e) { e.printStackTrace(); return "网络出错!"; } } 这是网上的代码,原文地址不记得了,本身是为了解决我自己的一个需求将一个内存中的照片 上传,这里有一个问需要记录一下,以免以后不知道 根据 RFC1867协议 这里参数的输入方法是 end 为换行\r\n 输入第一行 "Content-Disposition: form-data; name=\"test\""+ end 输入一行空格 输入参数内容 输入定义的分隔符(相当于上面的 twoHyphens + boundary + end) 对于接收端,只相当于普通的单上传而以 改过的类 //例子 UpLoadFile uf=new UpLoadFile(); ListupParameters=new ArrayList(); UpParameter par=new UpParameter(); par.name="job_id"; par.data="123"; upParameters.add(par); par=new UpParameter(); par.name="partner_id"; par.data="234"; upParameters.add(par); par=new UpParameter(); par.name="start_pic"; par.type=ParType.File; par.data=Environment.getExternalStorageDirectory().getPath()+"/DCIM/Camera/IMG_2 0120508_171614.jpg"; upParameters.add(par); par=new UpParameter(); par.name="sign_pic"; par.type=ParType.bytes; par.data="000".getBytes(); upParameters.add(par); String s= uf.uploadFile( ";a=addJob",upParameters) ; package com.test.uploadtest; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.net.HttpURLConnection; import java.net.URL; import java.util.List; /** * 上传文件 * * @author Administrator * */ public class UpLoadFile { public static boolean isupok(String result) { return result.trim().equals("0"); } /*----------------------------------从返回值中取出文字--------------------*/ public String getResultStr(InputStream is) { String result=""; InputStreamReader isr; try { isr = new InputStreamReader(is, "utf-8"); BufferedReader br = new BufferedReader(isr); // 上传返回值 String sl; while((sl = br.readLine()) != null) result = result+sl; br.close(); is.close(); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return result; } /*-----------------------------------------------------------------------*/ /* 上传文件至Server,uploadUrl:接收文件的处理页面 */ /*本次有两个文件需要上传,所以有点麻烦*/ public String uploadFile(String uploadUrl,ListupParameters) { String end = "\r\n"; String twoHyphens = "--"; String boundary = "******"; String result=""; try { URL url = new URL(uploadUrl); HttpURLConnection httpURLConnection = (HttpURLConnection) url .openConnection(); // 设置每次传输的流大小,可以有效防止手机因为内存不足崩溃 // 此方法用于在预先不知道内容长度时启用没有进行内部缓冲的 HTTP 请求 正文的流。 httpURLConnection.setChunkedStreamingMode(128 * 1024);// 128K // 允许输入输出流 httpURLConnection.setDoInput(true); httpURLConnection.setDoOutput(true); httpURLConnection.setUseCaches(false); // 使用POST方法 httpURLConnection.setRequestMethod("POST"); httpURLConnection.setRequestProperty("Connection", "Keep-Alive"); httpURLConnection.setRequestProperty("Charset", "UTF-8"); httpURLConnection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); DataOutputStream dos = new DataOutputStream( httpURLConnection.getOutputStream()); dos.writeBytes(twoHyphens + boundary + end); for(UpParameter par:upParameters) { par.writeTo(dos, twoHyphens + boundary + end, end); } dos.flush(); //从返回值中取出值 result=getResultStr(httpURLConnection.getInputStream()); } catch (Exception e) { e.printStackTrace(); result="上传出错.."+e.getMessage(); } return result; } public enum ParType{Str,File,bytes}; /***********上传参数类***********/ public static class UpParameter { public ParType type=ParType.Str; public String name="par"; public Object data; /** * @param dos * @param boundary 分隔符 * @param end 结束一般是\r\n * @throws IOException */ public void writeTo(DataOutputStream dos,String boundary,String end) throws IOException { switch(type) { case Str: dos.writeBytes("Content-Disposition: form-data; name=\""+name+"\""+ end); dos.writeBytes(end); dos.writeBytes((String) data); dos.writeBytes(end); dos.writeBytes(boundary); break; case File: String srcPath=(String) data; dos.writeBytes("Content-Disposition: form-data; name=\""+name+"\"; filename=\"" + srcPath.substring(srcPath.lastIndexOf("/") + 1) + "\"" + end); dos.writeBytes(end); FileInputStream fis = new FileInputStream(srcPath); byte[] buffer = new byte[8192]; // 8k int count = 0; // 读取文件 while ((count = fis.read(buffer)) != -1) { dos.write(buffer, 0, count); } fis.close(); dos.writeBytes(end); dos.writeBytes(boundary); break; case bytes: dos.writeBytes("Content-Disposition: form-data; name=\""+name+"\""+ end); dos.writeBytes(end); dos.write((byte[]) data); dos.writeBytes(end); dos.writeBytes(boundary); break; } } } }
/
本文档为【android 上传文件】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索