2014-01-20 2 views
1

Я пытаюсь загрузить видеофайл с устройства android на http-сервер. И я использовал многостраничную загрузку файлов. Код, используемый с аудиофайлом, работает правильно. Но когда я пытаюсь загрузить видеофайл, я получаю HttpHostConnectException. Я добавил все необходимые разрешения в приложении.Загрузка видео на http-сервер из приложения android

HttpClient httpClient = new DefaultHttpClient(); 
      HttpPost postRequest=new HttpPost("http://xxx.xxx.x.xxx:8090/WebAppTest/rest/file/upload?name=five.mp4"); 

      MultipartEntity reqEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 
      FileBody fb = new FileBody(filename, "video/3gpp"); 
      FormBodyPart bodyPart = new FormBodyPart("file",fb); 
       reqEntity.addPart(bodyPart); 
      postRequest.setEntity(reqEntity); 
      HttpResponse response=httpClient.execute(postRequest); 
+0

@Marcin Orlowski есть что-нибудь не в порядке? –

+0

было. форматирование блока кода. вы всегда можете увидеть разницу в изменении, нажав «отредактированный ....» –

+0

Но предыдущий также находится в читаемом формате? –

ответ

1

общественного класса BigFileUpload {

public static String TAG = "filevideoupload"; 
private static final char PARAMETER_DELIMITER = '&'; 
private static final char PARAMETER_EQUALS_CHAR = '='; 

public String sendFileToServer(String filename, String targetUrl, String videoName) 
{ 
    String response = "error"; 
    String postParameters; 
    Log.e(TAG, filename); 
    Log.e(TAG, targetUrl); 

    long start = System.currentTimeMillis(); 
    HttpURLConnection connection = null; 
    DataOutputStream outputStream = null; 
    // DataInputStream inputStream = null; 

    String pathToOurFile = filename; 
    String urlServer = targetUrl; 
    String lineEnd = "\r\n"; 
    String twoHyphens = "--"; 
    String boundary = "*****"; 
    // DateFormat df = new SimpleDateFormat("yyyy_MM_dd_HH:mm:ss"); 

    int bytesRead, bytesAvailable, bufferSize; 
    byte[] buffer; 
    int maxBufferSize = 1 * 1024; 

    try 
    { 
     FileInputStream fileInputStream = new FileInputStream(new File(pathToOurFile)); 

     URL url = new URL(urlServer); 
     connection = (HttpURLConnection) url.openConnection(); 

     // Allow Inputs & Outputs 
     connection.setDoInput(true); 
     connection.setDoOutput(true); 
     connection.setUseCaches(false); 
     connection.setChunkedStreamingMode(1024); 

     connection.setRequestMethod("POST"); 

     connection.setRequestProperty("Connection", "Keep-Alive"); 
     connection.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); 

     outputStream = new DataOutputStream(connection.getOutputStream()); 
     outputStream.writeBytes(twoHyphens + boundary + lineEnd); 

     String connstr = null; 
     connstr = "Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + videoName + "\"" + lineEnd; 
     Log.i(TAG, "connstr->" + connstr); 

     outputStream.writeBytes(connstr); 
     outputStream.writeBytes(lineEnd); 

     bytesAvailable = fileInputStream.available(); 
     bufferSize = Math.min(bytesAvailable, maxBufferSize); 
     buffer = new byte[bufferSize]; 

     // Read file 
     bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
     Log.e(TAG, "bytesAvailable " + bytesAvailable + ""); 
     try 
     { 
      while (bytesRead > 0) 
      { 
       try 
       { 
        outputStream.write(buffer, 0, bufferSize); 
       } 
       catch (OutOfMemoryError e) 
       { 
        e.printStackTrace(); 
        response = "outofmemoryerror"; 

        Log.e(TAG, "115 OOM "); 
        return response; 
       } 
       bytesAvailable = fileInputStream.available(); 
       bufferSize = Math.min(bytesAvailable, maxBufferSize); 
       bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
      } 
     } 
     catch (Exception e) 
     { 
      Log.e(TAG, "bytesAvailable error in try 124" + bytesAvailable + ""); 

      e.printStackTrace(); 
      response = "error"; 
      return response; 
     } 
     outputStream.writeBytes(lineEnd); 
     outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); 

     Log.e(TAG, "112 --> end of wrte"); 

     // Responses from the server (code and message) 
     int serverResponseCode = connection.getResponseCode(); 
     Log.i(TAG, "server response code " + serverResponseCode); 
     Log.i(TAG, "server response msg " + connection.getResponseMessage()); 

     if (serverResponseCode == 200) 
     { 
      response = "true"; 
     } 
     InputStream is; 
     if (connection.getResponseCode() != 200) 
     { 
      is = connection.getErrorStream(); 
     } 
     else 
     { 
      is = connection.getInputStream(); 
     } 
     // s.useDelimiter("\\Z"); 

     Log.i(TAG, "server response content " + getStringFromInputStream(is)); 

     fileInputStream.close(); 
     outputStream.flush(); 
     outputStream.close(); 
     outputStream = null; 
    } 
    catch (Exception ex) 
    { 
     // Exception handling 
     response = "error"; 
     Log.e(TAG, ex.getMessage() + ""); 
     ex.printStackTrace(); 
    } 

    Log.e(TAG, "Time for uplaod " + (System.currentTimeMillis() - start)/1000 + " sekund:)"); 
    return response; 
} 

private String getStringFromInputStream(InputStream is) 
{ 

    BufferedReader br = null; 
    StringBuilder sb = new StringBuilder(); 

    String line; 
    try 
    { 

     br = new BufferedReader(new InputStreamReader(is)); 
     while ((line = br.readLine()) != null) 
     { 
      sb.append(line); 
     } 

    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
    finally 
    { 
     if (br != null) 
     { 
      try 
      { 
       br.close(); 
      } 
      catch (IOException e) 
      { 
       e.printStackTrace(); 
      } 
     } 
    } 

    return sb.toString(); 

} 

}

Используйте этот класс для загрузки файлов. Я использую его для загрузки видео.

это действительно

+0

Спасибо, я попробую сейчас. –

+0

Обратите внимание, что вам необходимо предоставить правильный код на стороне сервера. – andDev

+0

Я попытался выполнить код и закончил с выделением исключения –

Смежные вопросы