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

Golang+Android基于HttpURLConnection實現的文件上傳功能示例

 更新時間:2017年03月02日 08:56:34   作者:books1958  
這篇文章主要介紹了Golang+Android基于HttpURLConnection實現的文件上傳功能,結合具體實例形式分析了Android基于HttpURLConnection的客戶端結合Go語言服務器端實現文件上傳功能的操作技巧,需要的朋友可以參考下

本文實例講述了Golang+Android基于HttpURLConnection實現的文件上傳功能。分享給大家供大家參考,具體如下:

這里要演示的是使用Android程序作為客戶端(使用HttpURLConnection訪問網絡),Golang程序作為服務器端,實現文件上傳。

客戶端代碼:

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相關內容感興趣的讀者可查看本站專題:《Android開發(fā)入門與進階教程》、《Android調試技巧與常見問題解決方法匯總》、《Android基本組件用法總結》、《Android視圖View技巧總結》、《Android布局layout技巧總結》及《Android控件用法總結

希望本文所述對大家Android程序設計有所幫助。

相關文章

  • Android實現圖片在屏幕內縮放和移動效果

    Android實現圖片在屏幕內縮放和移動效果

    這篇文章主要為大家詳細介紹了Android控制圖片在屏幕內縮放和移動效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • Flutter Navigator路由傳參的實現

    Flutter Navigator路由傳參的實現

    本文主要介紹了Flutter Navigator路由傳參的實現,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Android自定義Camera實現拍照功能

    Android自定義Camera實現拍照功能

    這篇文章主要為大家詳細介紹了Android自定義Camera實現拍照功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • RecycleView實現各種尺寸圖片展示

    RecycleView實現各種尺寸圖片展示

    這篇文章主要為大家詳細介紹了RecycleView實現各種尺寸圖片展示,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Android Listview多tab上滑懸浮效果

    Android Listview多tab上滑懸浮效果

    這篇文章主要為大家詳細介紹了Android Listview多tab上滑懸浮效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • Angular5.0.0新特性

    Angular5.0.0新特性

    Angular5.0.0是一款非常優(yōu)秀的前端JS框架,已經被用于google多款產品當中,這篇文章主要介紹了Angular5.0.0新特性,需要的朋友可以參考下
    2017-11-11
  • Android  RecyclerView詳解及簡單實例

    Android RecyclerView詳解及簡單實例

    這篇文章主要介紹了Android RecyclerView詳解及簡單實例的相關資料,需要的朋友可以參考下
    2017-01-01
  • Android:利用SharedPreferences實現自動登錄

    Android:利用SharedPreferences實現自動登錄

    本篇文章主要介紹了Android實現自動登錄,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • android實現listview分頁的方法

    android實現listview分頁的方法

    這篇文章主要介紹了android實現listview分頁的方法,涉及Android生成listview列表的相關技巧,需要的朋友可以參考下
    2015-05-05
  • Android Flutter實戰(zhàn)之為照片添加顏色濾鏡

    Android Flutter實戰(zhàn)之為照片添加顏色濾鏡

    這篇文章我們將利用TweenAnimationBuilder來實現一個圖片調色的過渡動畫,從而實現為照片添加顏色濾鏡的效果,感興趣的可以了解一下
    2022-12-12

最新評論

栖霞市| 万全县| 伊宁县| 交城县| 三亚市| 曲麻莱县| 界首市| 塘沽区| 阳朔县| 田东县| 宜黄县| 鄄城县| 武强县| 莲花县| 惠来县| 班玛县| 南康市| 沙田区| 抚顺市| 寻乌县| 德兴市| 桐柏县| 抚宁县| 澄城县| 中西区| 苍溪县| 中超| 博野县| 巴林右旗| 长葛市| 商洛市| 深圳市| 肥乡县| 仁化县| 大化| 朝阳县| 威远县| 霍州市| 巫溪县| 和硕县| 皋兰县|