2017-04-05 60 views
1

我要實現的是通過HttpURLConnection的圖像或PDF,我的所有數據都存儲在SD卡的文件夾中發送的功能,我會得到的名單在某個文件夾中的文件,並通過HttpURLConnection將其發送到服務器。如何通過HttpURLConnection類向服務器發送圖片或PDF

我不想使用外部libray(僅適用於原生功能),所以啥子是做到這一點的最好方法是什麼?

這是我的代碼的一部分:

File dataToSendDir = new File(Environment.getExternalStorageDirectory(), SENDATA_FOLDER); 
    File[] listOfFiles = dataToSendDir.listFiles(); 
    for (File listOfFile : listOfFiles) { 
    URL url = new URL("MY URL"); 
    HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
    conn.setRequestMethod("POST"); 
    conn.setUseCaches(false); 
    conn.setDoInput(true); 
    conn.setDoOutput(true); 
    conn.setConnectTimeout(2000); 

    File file = new File(listOfFile.getAbsolutePath()); 
    InputStream inputStream = new FileInputStream(file); 
    byte[] bytes = new byte[4096]; 
    inputStream.read(bytes); 

... 
} 

現在?我可以發送它嗎?

我的想法是:該文件夾中的每個文件我「獲得」,包括它在HttpURLConnection的所有字節

回答

1

這是我使用的代碼:

URL url = new URL("YOUR ULR"); 
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
conn.setRequestMethod("GET"); 
conn.setDoInput(true); 
conn.setDoOutput(true); 
conn.setConnectTimeout(6000); 

HashMap<String, String> params = new HashMap<>(); 
params.put("PARAMS", dataToSend); 

OutputStream os = conn.getOutputStream(); 
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); 
boolean first = true; 
StringBuilder result = new StringBuilder(); 
for (Map.Entry<String, String> entry : params.entrySet()) { 
    if (first) 
     first = false; 
    else 
     result.append("&"); 
    result.append(URLEncoder.encode(entry.getKey(), "UTF-8")); 
    result.append("="); 
    result.append(URLEncoder.encode(entry.getValue(), "UTF-8")); 
} 
writer.write(result.toString()); 
writer.flush(); 
writer.close(); 
os.close(); 


StringBuilder serverResponse = new StringBuilder(); 
InputStream is = conn.getInputStream(); 
BufferedReader br = new BufferedReader(new InputStreamReader(is)); 
String inputLine; 
while ((inputLine = br.readLine()) != null) { 
    serverResponse.append(inputLine); 
} 
response = serverResponse.toString(); 
相關問題