91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android中如何使用HttpURLConnection實現一個文件上傳

發布時間:2020-11-25 16:18:09 來源:億速云 閱讀:380 作者:Leah 欄目:移動開發

今天就跟大家聊聊有關Android中如何使用HttpURLConnection實現一個文件上傳,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

客戶端代碼:

public static String uploadFile(String uploadUrl, String filePath) {
    Log.v(TAG, "url:" + uploadUrl);
    Log.v(TAG, "filePath:" + filePath);
    String nextLine = "\r\n";
    String dividerStart = "--";
    String boundary = "******";
    try {
      URL url = new URL(uploadUrl);
      HttpURLConnection connection = (HttpURLConnection) url.openConnection();
      connection.setChunkedStreamingMode(1024 * 256);
      connection.setDoInput(true);
      connection.setDoOutput(true);
      connection.setUseCaches(false);
      connection.setRequestMethod("POST");
      // 設置Http請求頭
      connection.setRequestProperty("Connection", "Keep-Alive");
      connection.setRequestProperty("Charset", "UTF-8");
      //必須在Content-Type 請求頭中指定分界符
      connection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
      //定義數據寫入流,準備上傳文件
      DataOutputStream dos = new DataOutputStream(connection.getOutputStream());
      dos.writeBytes(dividerStart + boundary + nextLine);
      //設置與上傳文件相關的信息
      dos.writeBytes("Content-Disposition: form-data; name=\"file\"; filename=\""
          + filePath.substring(filePath.lastIndexOf("/") + 1) + "\"" + nextLine);
      dos.writeBytes(nextLine);
      FileInputStream fis = new FileInputStream(filePath);
      byte[] buffer = new byte[1024 * 32];
      int count;
      // 讀取文件內容,并寫入OutputStream對象
      while ((count = fis.read(buffer)) != -1) {
        dos.write(buffer, 0, count);
      }
      fis.close();
      dos.writeBytes(nextLine);
      dos.writeBytes(dividerStart + boundary + dividerStart + nextLine);
      dos.flush();
      // 開始讀取從服務器傳過來的信息
      InputStream is = connection.getInputStream();
      BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));
      String result = br.readLine();
      dos.close();
      is.close();
      connection.disconnect();
      return result;
    } catch (IOException e) {
      e.printStackTrace();
    }
    return null;
}

服務器端代碼:

復制代碼 代碼如下:
package webserver
//接收客戶端通過http上傳的文件
//Date: 2015-3-25 16:18:33
import (
    "fmt"
    "io/ioutil"
    "log"
    "net/http"
    "os"
)
func UpLoadBase() {
    fmt.Println("This is uploadbase")
    http.HandleFunc("/httpUploadFile", handleUploadFile)
    http.ListenAndServe(":8086", nil)
    if err != nil {
        fmt.Println("ListenAndServe error: ", err.Error())
    }
}
func handleUploadFile(w http.ResponseWriter, r *http.Request) {
    fmt.Println("client:", r.RemoteAddr)
    file, fileHeader, err := r.FormFile("file")
    if err != nil {
        log.Fatal("FormFile:", err.Error())
        return
    }
    defer func() {
        if err := file.Close(); err != nil {
            log.Fatal("Close:", err.Error())
            return
        }
    }()
    //文件名
    fileName := fileHeader.Filename
    if fileName == "" {
        log.Fatal("Param filename cannot be null.")
        return
    }
    //文件內容
    bytes, err := ioutil.ReadAll(file)
    //寫到服務端本地文件中
    outputFilePath := "/home/admin/桌面/" + fileName
    err = ioutil.WriteFile(outputFilePath, bytes, os.ModePerm)
    if err != nil {
        log.Fatal("WriteFileError:", err.Error())
        return
    }
    w.Write(([]byte)("上傳文件成功!"))
}

看完上述內容,你們對Android中如何使用HttpURLConnection實現一個文件上傳有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

厦门市| 宣威市| 城市| 陕西省| 银川市| 永丰县| 哈巴河县| 星座| 镇坪县| 双流县| 安化县| 梅河口市| 深水埗区| 南安市| 确山县| 墨脱县| 壶关县| 萍乡市| 丰宁| 元氏县| 竹溪县| 芒康县| 卓资县| 远安县| 金乡县| 思南县| 科技| 阿坝县| 化州市| 丰城市| 朝阳市| 霍城县| 宁远县| 顺义区| 常德市| 虎林市| 榆中县| 潜江市| 哈密市| 井冈山市| 黔西|