最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android實現(xiàn)上傳文件功能的方法

 更新時間:2014年07月30日 10:34:40   投稿:shichen2014  
這篇文章主要介紹了Android實現(xiàn)上傳文件功能的方法,對Android初學(xué)者有一定的借鑒價值,需要的朋友可以參考下

本文所述為一個Android上傳文件的源代碼,每一步實現(xiàn)過程都備有詳盡的注釋,思路比較清楚,學(xué)習(xí)了本例所述上傳文件代碼之后,你可以應(yīng)對其它格式文件的上傳。實例中主要實現(xiàn)上傳文件至Server的方法,允許Input、Output,不使用Cache,使Androiod上傳文件變得輕松。

主要功能代碼如下:

package com.test;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class Main extends Activity {
  /* 變量聲明
  * newName:上傳后在服務(wù)器上的文件名稱
  * uploadFile:要上傳的文件路徑
  * actionUrl:服務(wù)器上對應(yīng)的程序路徑 */
  private String newName="image.jpg";
  private String uploadFile="/data/image.jpg";
  private String actionUrl="http://l27.0.0.1/upload/upload.jsp";
  private TextView mText1;
  private TextView mText2;
  private Button mButton;

  @Override
  public void onCreate(Bundle savedInstanceState)
  {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.main);

   mText1 = (TextView) findViewById(R.id.myText2);
   mText1.setText("文件路徑:\n"+uploadFile);
   mText2 = (TextView) findViewById(R.id.myText3);
   mText2.setText("上傳網(wǎng)址:\n"+actionUrl);
   /* 設(shè)置mButton的onClick事件處理 */  
   mButton = (Button) findViewById(R.id.myButton);
   mButton.setOnClickListener(new View.OnClickListener()
   {
    public void onClick(View v)
    {
     uploadFile();
    }
   });
  }

  /* 上傳文件至Server的方法 */
  private void uploadFile()
  {
   String end = "\r\n";
   String twoHyphens = "--";
   String boundary = "*****";
   try
   {
    URL url =new URL(actionUrl);
    HttpURLConnection con=(HttpURLConnection)url.openConnection();
    /* 允許Input、Output,不使用Cache */
    con.setDoInput(true);
    con.setDoOutput(true);
    con.setUseCaches(false);
    /* 設(shè)置傳送的method=POST */
    con.setRequestMethod("POST");
    /* setRequestProperty */
    con.setRequestProperty("Connection", "Keep-Alive");
    con.setRequestProperty("Charset", "UTF-8");
    con.setRequestProperty("Content-Type",
             "multipart/form-data;boundary="+boundary);
    /* 設(shè)置DataOutputStream */
    DataOutputStream ds = 
     new DataOutputStream(con.getOutputStream());
    ds.writeBytes(twoHyphens + boundary + end);
    ds.writeBytes("Content-Disposition: form-data; " +
           "name=\"file1\";filename=\"" +
           newName +"\"" + end);
    ds.writeBytes(end);  

    /* 取得文件的FileInputStream */
    FileInputStream fStream = new FileInputStream(uploadFile);
    /* 設(shè)置每次寫入1024bytes */
    int bufferSize = 1024;
    byte[] buffer = new byte[bufferSize];

    int length = -1;
    /* 從文件讀取數(shù)據(jù)至緩沖區(qū) */
    while((length = fStream.read(buffer)) != -1)
    {
     /* 將資料寫入DataOutputStream中 */
     ds.write(buffer, 0, length);
    }
    ds.writeBytes(end);
    ds.writeBytes(twoHyphens + boundary + twoHyphens + end);

    /* close streams */
    fStream.close();
    ds.flush();

    /* 取得Response內(nèi)容 */
    InputStream is = con.getInputStream();
    int ch;
    StringBuffer b =new StringBuffer();
    while( ( ch = is.read() ) != -1 )
    {
     b.append( (char)ch );
    }
    /* 將Response顯示于Dialog */
    showDialog(b.toString().trim());
    /* 關(guān)閉DataOutputStream */
    ds.close();
   }
   catch(Exception e)
   {
    showDialog(""+e);
   }
  }

  /* 顯示Dialog的method */
  private void showDialog(String mess)
  {
   new AlertDialog.Builder(Main.this).setTitle("Message")
   .setMessage(mess)
   .setNegativeButton("確定",new DialogInterface.OnClickListener()
   {
    public void onClick(DialogInterface dialog, int which)
    {     
    }
   })
   .show();
  }
}

讀者如果覺得功能不足的話可以對代碼進行擴展與完善,使之更加符合自身的應(yīng)用需求。

相關(guān)文章

  • Android簡單自定義音樂波動特效圖

    Android簡單自定義音樂波動特效圖

    這篇文章主要為大家詳細介紹了Android簡單自定義音樂波動特效圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Android自定義照相機的實例

    Android自定義照相機的實例

    這篇文章主要介紹了Android自定義照相機的實例的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Android實現(xiàn)樹形層級ListView

    Android實現(xiàn)樹形層級ListView

    這篇文章主要介紹了Android實現(xiàn)樹形層級ListView的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • Android 串口通信編程及串口協(xié)議分析

    Android 串口通信編程及串口協(xié)議分析

    這篇文章主要介紹了Android 串口通信編程及串口協(xié)議分析的相關(guān)資料,這里對Android 串口通信進行詳解,及簡單實現(xiàn)步驟和協(xié)議進行分析,需要的朋友可以參考下
    2016-11-11
  • flutter的環(huán)境安裝配置問題及解決方法

    flutter的環(huán)境安裝配置問題及解決方法

    Flutter是Google推出的基于Dart語言開發(fā)的跨平臺開源UI框架,旨在統(tǒng)一紛紛擾擾的跨平臺開發(fā)框架,在UI層面上多端共用一套Dart代碼來實現(xiàn)多平臺適配開發(fā),這篇文章主要介紹了flutter的環(huán)境安裝配置問題,需要的朋友可以參考下
    2020-06-06
  • Android Studio輕松構(gòu)建自定義模板的步驟記錄

    Android Studio輕松構(gòu)建自定義模板的步驟記錄

    這篇文章主要給大家介紹了關(guān)于Android Studio輕松構(gòu)建自定義模板的相關(guān)資料,文中通過示例代碼以及圖文介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • Android自定義View實現(xiàn)數(shù)字密碼鎖

    Android自定義View實現(xiàn)數(shù)字密碼鎖

    這篇文章主要為大家詳細介紹了Android自定義View實現(xiàn)數(shù)字密碼鎖,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android 夜間模式的實現(xiàn)代碼示例

    Android 夜間模式的實現(xiàn)代碼示例

    本篇文章主要介紹了Android 夜間模式的實現(xiàn)代碼示例,實現(xiàn)能夠根據(jù)不同的設(shè)定,呈現(xiàn)不同風(fēng)格的界面給用戶,有興趣的可以了解一下。
    2017-03-03
  • android打開本地圖像的方法

    android打開本地圖像的方法

    這篇文章主要介紹了android打開本地圖像的方法,涉及Android操作圖像的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • Flutter onTap中讓你脫穎而出的5條規(guī)則

    Flutter onTap中讓你脫穎而出的5條規(guī)則

    這篇文章主要為大家介紹了Flutter onTap中讓你脫穎而出的5條規(guī)則,小事情決定了你的熟練程度,這些小細節(jié)的有趣之處在于它們的豐富性
    2023-11-11

最新評論

江华| 醴陵市| 剑川县| 英超| 桂东县| 酉阳| 新沂市| 黄梅县| 和田市| 宁国市| 仁布县| 元江| 饶河县| 怀宁县| 云龙县| 天镇县| 纳雍县| 贵溪市| 秀山| 和硕县| 卓资县| 吉水县| 柳河县| 彰武县| 卢龙县| 眉山市| 阳信县| 隆安县| 久治县| 张掖市| 翁源县| 福州市| 屯门区| 会理县| 柯坪县| 五家渠市| 娄烦县| 包头市| 大邑县| 老河口市| 慈溪市|