android上传文件
来源:互联网 发布:手机淘宝收藏店铺关注 编辑:程序博客网 时间:2024/05/10 03:41
1.Android端:
1.1 布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <TextView android:id="@+id/mTextView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <TextView android:id="@+id/mTextView2" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:id="@+id/mButton1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
1.2 Activity:
package org.yang.android.upload;import java.io.File;import android.app.Activity;import android.os.Bundle;import android.os.Environment;import android.view.View;import android.widget.Button;import android.widget.TextView;public class AndroidUploadFileActivity extends Activity{private String newName = "linux.jpg";// 要上传的本地文件路径private String uploadFile = Environment.getExternalStorageDirectory()+ "/image/psb.jpg";// 上传到服务器的指定位置private String actionUrl = "http://172.17.151.54:8090/FinalProject/jsp/androidUploadFile";private TextView mTextView1;private TextView mTextView2;private Button mButton1;File file = new File(uploadFile);@Overridepublic void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);if ( file.exists() ){System.out.println("FILE IS EXISTS!!");}else{System.out.println("FILE IS NOT EXISTS!!");}System.out.println("uploadFile is " + uploadFile);mTextView1 = (TextView) findViewById(R.id.mTextView1);mTextView1.setText("FilePath:/n" + uploadFile);mTextView2 = (TextView) findViewById(R.id.mTextView2);mTextView2.setText("UploadPath:/n" + actionUrl);/* 设定mButton的onClick事件处理 */mButton1 = (Button) findViewById(R.id.mButton1);mButton1.setOnClickListener(new View.OnClickListener(){public void onClick(View v){FileUplaodUtil.uploadFile(AndroidUploadFileActivity.this.file, actionUrl);}});}}
1.2 FileUploadUtil.java文件:
package org.yang.android.upload;import java.io.DataOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.UUID;import android.util.Log;/** * * 上传工具类 * * @author spring sky Email:vipa1888@163.com QQ:840950105 MyName:石明政 */public class FileUplaodUtil{private static final String TAG = "uploadFile";private static final int TIME_OUT = 10 * 1000; // 超时时间private static final String CHARSET = "utf-8"; // 设置编码/** * android上传文件到服务器 * * @param file * 需要上传的文件 * @param RequestURL * 请求的rul * @return 返回响应的内容 */public static String uploadFile(File file, String RequestURL){String result = null;String BOUNDARY = UUID.randomUUID().toString(); // 边界标识 随机生成String PREFIX = "--", LINE_END = "\r\n";String CONTENT_TYPE = "multipart/form-data"; // 内容类型try{URL url = new URL(RequestURL);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setReadTimeout(TIME_OUT);conn.setConnectTimeout(TIME_OUT);conn.setDoInput(true); // 允许输入流conn.setDoOutput(true); // 允许输出流conn.setUseCaches(false); // 不允许使用缓存conn.setRequestMethod("POST"); // 请求方式conn.setRequestProperty("Charset", CHARSET); // 设置编码conn.setRequestProperty("connection", "keep-alive");conn.setRequestProperty("Content-Type", CONTENT_TYPE+ ";boundary=" + BOUNDARY);if (file != null){/** * 当文件不为空,把文件包装并且上传 */DataOutputStream dos = new DataOutputStream(conn.getOutputStream());StringBuffer sb = new StringBuffer();sb.append(PREFIX);sb.append(BOUNDARY);sb.append(LINE_END);/** * 这里重点注意: name里面的值为服务器端需要key 只有这个key 才可以得到对应的文件 * filename是文件的名字,包含后缀名的 比如:abc.png */sb.append("Content-Disposition: form-data; name=\"uploaded\"; filename=\""+ file.getName()+ "\""+ LINE_END);sb.append("Content-Type: application/octet-stream; charset="+ CHARSET + LINE_END);sb.append(LINE_END);dos.write(sb.toString().getBytes());InputStream is = new FileInputStream(file);byte[] bytes = new byte[1024];int len = 0;while ((len = is.read(bytes)) != -1){dos.write(bytes, 0, len);}is.close();dos.write(LINE_END.getBytes());byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINE_END).getBytes();dos.write(end_data);dos.flush();/** * 获取响应码 200=成功 当响应成功,获取响应的流 */int res = conn.getResponseCode();Log.e(TAG, "response code:" + res);// if(res==200)// {Log.e(TAG, "request success");InputStream input = conn.getInputStream();StringBuffer sb1 = new StringBuffer();int ss;while ((ss = input.read()) != -1){sb1.append((char) ss);}result = sb1.toString();Log.e(TAG, "result : " + result);// }// else{// Log.e(TAG, "request error");// }}} catch (MalformedURLException e){e.printStackTrace();} catch (IOException e){e.printStackTrace();}return result;}}
2.服务器端:
package org.android.action.file;import java.io.File;import org.android.tool.UploadFileTool;import org.apache.commons.io.FileUtils;import com.opensymphony.xwork2.ActionSupport;public class UploadFileAction extends ActionSupport{private static final long serialVersionUID = 1L;private int result;private String msg;private String uploadedFileName;private File uploaded;public int getResult(){return result;}public void setResult(int result){this.result = result;}public String getMsg(){return msg;}public void setMsg(String msg){this.msg = msg;}public String getUploadedFileName(){return uploadedFileName;}public void setUploadedFileName(String uploadedFileName){this.uploadedFileName = uploadedFileName;}public File getUploaded(){return uploaded;}public void setUploaded(File uploaded){this.uploaded = uploaded;}// --------------------------------------Method--------------------------------------------------//public void receiveFile() throws Exception{File f = new File("e:\\" + getUploadedFileName());System.out.println("e:\\" + getUploadedFileName());FileUtils.copyFile(getUploaded(), f);System.out.println("UPLOAD SUCCESS!!!!!! + Java Web");}}
- android http上传文件
- Android 上传大文件
- Android 上传大文件
- android 文件上传
- android 上传文件类
- android上传文件
- Android 文件上传参考
- Android 文件的上传
- Android入门:文件上传
- android之文件上传
- Android 上传文件
- Android上传文件,续
- android httpclient 上传文件
- android 文件上传
- Android中的文件上传
- android 文件上传
- Android文件上传
- Android文件上传
- UNIX程序设计实验一:实现带参数的简单的shell
- socket编程中send recv阻塞和非阻塞详解
- 逻辑读,物理读,预读
- Centos5.7 中文乱码问题解决方案
- hadoop Capacity Scheduler调度器使用体验
- android上传文件
- Linux启动分析
- 理解SQL SERVER中的逻辑读,预读和物理读
- JAVA基础第二天学习日记_标识符、常量与变量、运算符、条件控制语句
- vsftp "上传 553 Could not create file"
- Android WebView
- C++ Metro App 同C# Metro App 引用winmd库方法
- python的常见模板的下载地址
- X86 X64 AMD64 IA64