2017-04-05 22 views
1

HttpURLConnection経由で画像またはPDFを送信する機能を実装する必要があります。すべてのデータがSDCardのフォルダに保存されています。特定のフォルダ内のファイル、およびHttpURLConnectionを介してサーバーに送信します。HttpURLConnectionを使用してサーバーに画像またはPDFを送信する方法

私は外部ライブラリ(ネイティブ関数のみ)を使用したくないので、これを行う最善の方法は何ですか?

これは私のコードの一部です:今

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(); 
関連する問題