本文實例講述了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;}服務器端代碼:
更多關于Android相關內容感興趣的讀者可查看本站專題:《Android開發入門與進階教程》、《Android調試技巧與常見問題解決方法匯總》、《Android基本組件用法總結》、《Android視圖View技巧總結》、《Android布局layout技巧總結》及《Android控件用法總結》
希望本文所述對大家Android程序設計有所幫助。
新聞熱點
疑難解答