android上傳檔案

來源:互聯網
上載者:User

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");}}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.