1

我在我的SD卡中有zip文件,大小为8-9 mb。我正在使用此库发送数据。在Android中向服务器发送大数据的最佳方式

https://github.com/loopj/android-async-http

,这是我的源

private void sendSubmitRequest(File file) 
{ 
    AsyncHttpClient client = new AsyncHttpClient(); 

    RequestParams params = new RequestParams(); 
    showpDialog("loading"); 

    try 
    { 

     params.put("vin", vinNumber.getText().toString()); 
     params.put("polygon", polygonAdapter.getItem(spinnerPosition).getId()+""); 


     params.put("scanner_key", vinScannerModel.getSecretKey()); 
     params.put("status", status); 
     params.put("user", vinScannerModel.getId()+""); 

     InputStream inputStream = null; 
     inputStream = new FileInputStream(file.getAbsolutePath()); 
     byte[] buffer = new byte[8192]; 
     int bytesRead; 
     ByteArrayOutputStream output = new ByteArrayOutputStream(); 
     Base64OutputStream output64 = new Base64OutputStream(output, Base64.DEFAULT); 
     try { 
      while ((bytesRead = inputStream.read(buffer)) != -1) { 
       output64.write(buffer, 0, bytesRead); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     output64.close(); 

     String attachedFile = output.toString(); 


     params.put("photos", attachedFile); 

    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 


    client.post(ServerUtil.addVin, params, new TextHttpResponseHandler() { 
     @Override 
     public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { 

      showOneItemDialog(throwable.toString(),false); 
      hidepDialog(); 


      Log.d("server status",responseString+""); 
     } 

     @Override 
     public void onSuccess(int statusCode, Header[] headers, String responseString) { 
      Log.d("server status",responseString+""); 
      try { 
       hidepDialog(); 
       JSONObject mainJsonObject = new JSONObject(responseString.toString()); 
       boolean status=mainJsonObject.getBoolean("status"); 
       String desc=mainJsonObject.getString("desc"); 
       if(desc!=null) 
        showOneItemDialog(desc,status); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
       showOneItemDialog(e.toString(),false); 
      } 
     } 
    }); 




} 

我的代码工作完美,但我想检查我的解决方案是完整的?

回答

2

您需要在上传服务中运行此操作,而不是作为活动/用户界面的一部分。如果用户杀死该活动(或者由于内存压力而被删除),则会丢失上传。

我没有使用过这种特殊的库,但一个这样看起来像是你会发现有用的,看一眼就表明它具有最之一通常所需要的功能: https://github.com/gotev/android-upload-service

+0

感谢您的关注。如何我可以在上传服务中使用我的请求参数?我如何发送邮政方法此上传服务? – BekaKK

+0

你可以使用一个自定义的OkHttp客户端,它应该允许你设置你需要的所有标题等。就像我说的,但是我之前没有用过这个。 – wblaschko

+0

谢谢,我明天再试。我会告诉你最终结果 – BekaKK

相关问题