Android上传下载文件(图片)
来源:互联网 发布:java程序员的工作内容 编辑:程序博客网 时间:2024/06/05 17:40
这里写是Android下上传下载文件,需要服务器端相应的程序配合,使用的是POST方法。Android客户端代码如下:
import java.io.BufferedReader;import java.io.ByteArrayOutputStream;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.URL;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.util.Log;public class NetFileGetPost {/** * 从服务器读取文件 * @param path 文件保存的路径 * @param urlPath 文件在服务器的位置 * @return * @throws Exception */public static Bitmap readFromUri(String path, String urlPath)throws Exception {Log.d("debug","start read pic " + urlPath);URL url = new URL(urlPath);byte[] d = null;/** * 建立连接 */HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("POST");conn.setConnectTimeout(3 * 1000);/** * 得到连接状态 */int code = conn.getResponseCode();Log.d("debug","code = " + code);if (code == 200) {/** * 首先得到输入流,然后从输入流中写出数据到一个byte数组中,利用BitmapFactory工厂方法通过字节数组来得到 * 一个bitmap对象,最后利用FileOutputStream将bitmap对象转化成一个.png图片,存放在PIC_PATH中 */InputStream in = conn.getInputStream();d = readStream(path, in);if (d == null) {Log.w("debug","PicUtils --- >>> d == null");return null;}Bitmap bit = BitmapFactory.decodeByteArray(d, 0, d.length);File file = new File(path);if (!file.exists()) {file.createNewFile();}FileOutputStream out = new FileOutputStream(file);bit.compress(Bitmap.CompressFormat.JPEG, 100, out);conn.disconnect();out.close();in.close();return bit;} else {Log.w("debug","get Image is wrong");}return null;}private static byte[] readStream(String path, InputStream inStream) throws Exception { if (!createFile(path)) { Log.e("debug","create file path is not allow"); return null; } ByteArrayOutputStream outstream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = -1; while ((len = inStream.read(buffer)) != -1) { outstream.write(buffer, 0, len); } outstream.close(); return outstream.toByteArray(); }/** * 创建文件 */private static boolean createFile(String path) {File file = new File(path);if (file.exists()) {file.delete();}try {file.createNewFile();return true;} catch (IOException e) {e.printStackTrace();return false;}}/** * 上传文件到服务器 * @param urlPath 网络地址 * @param picPath 该图片所在文件夹位置 * @功能 上传图片,我的服务端是是用php写的 */ public static String uploadPic(String urlPath, String picPath) { DataOutputStream dos = null; // 往服务端写入数据的输出流 try { Log.d("debug","start upload pic " + urlPath); String end = "\r\n"; // 前面这些都是写html文件的头文件,固定的,不用去管 String twoHyphens = "--"; String boundary = "*****"; URL url = new URL(urlPath); HttpURLConnection httpURLConnection = (HttpURLConnection) url .openConnection(); httpURLConnection.setChunkedStreamingMode(20 * 1024);// 文件大小20K httpURLConnection.setDoInput(true); httpURLConnection.setDoOutput(true); httpURLConnection.setUseCaches(false); // 这个地方不使用缓存 httpURLConnection.setRequestMethod("POST"); httpURLConnection.setRequestProperty("Connection", "Keep-Alive"); httpURLConnection.setRequestProperty("Charset", "UTF-8"); httpURLConnection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); dos = new DataOutputStream(httpURLConnection.getOutputStream()); dos.writeBytes(twoHyphens + boundary + end); dos.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\"; filename=\"" + picPath.substring(picPath.lastIndexOf("/") + 1) + "\";" + end); dos.writeBytes(end); FileInputStream fis = new FileInputStream(picPath); byte[] buffer = new byte[1024 * 2]; int count = 0; while ((count = fis.read(buffer)) != -1) { dos.write(buffer, 0, count); } fis.close(); dos.writeBytes(end); dos.writeBytes(twoHyphens + boundary + twoHyphens + end); dos.flush(); BufferedReader reader = new BufferedReader(new InputStreamReader( httpURLConnection.getInputStream())); String result = reader.readLine(); // 这个是得到上传图片的结果 Log.d("debug","PicUtils --- >>> result = " + result); reader.close(); httpURLConnection.disconnect(); return result; } catch (Exception e) { e.printStackTrace(); return null; } finally { if (dos != null) { try { dos.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
0 0
- Android上传下载文件(图片)
- 多图片(文件)上传下载
- android 附件(图片)上传下载功能开发
- android webservice 上传下载图片
- Android文件上传下载
- android ftp4j文件上传下载
- android 文件上传下载
- android mcv4文件上传下载
- Android中的文件上传下载
- Android xUtils上传下载文件
- Android 文件上传下载
- webservice 上传下载文件,图片(转贴)
- .Net Core 图片文件上传下载
- .Net Core 图片文件上传下载
- 用MVC实现简单的文件(图片)上传下载功能
- servlet实现图片预览、文件上传下载(转载)
- 上传下载(上传图片 上传文件 下载文件)
- 文件上传下载(2)
- 牛的旅行--floyd算法
- 操作系统--------内存管理(2)
- git rebase和merge 区别和应用场景
- android nfc中Ndef格式的读写
- 安装python及twitter、mysqldb库以及easy_install的方法
- Android上传下载文件(图片)
- C#中ref和out的使用小结
- 【SQLite】SQLite简介
- C++ Expression Template 样例解析
- android动态模糊效果(1)
- AS3 Starling塔防教程——第四部分——Map Tiling
- java zip
- Singleton单例2种写法
- js学习第一天