2016-11-19 56 views
-3

我在上传文件到服务器时遇到一些困难,我需要知道使用namevaluepair上传文件的完整代码。听到是我的android代码,我只得到我的文件路径,如何将其上传到服务器的引用为“nameValuePairs.add(新的BasicNameValuePair(”附件“,selectedFilePath));”如何使用Android将.pdf .doc .txt文件上传到服务器(mysql数据库)

 String selectedFilePath="downloads/harry.txt" //(My file Path) 



     InputStream is = null; 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); 
     nameValuePairs.add(new BasicNameValuePair("postiontitle", positiontitle)); 
     nameValuePairs.add(new BasicNameValuePair("description", description)); 
     nameValuePairs.add(new BasicNameValuePair("jobtype", jobtype)); 
     nameValuePairs.add(new BasicNameValuePair("visatype", visatype)); 



    if (selectedFilePath != null) 
     { 
      nameValuePairs.add(new BasicNameValuePair("attachment", selectedFilePath)); 


     } 


     try { 


      HttpClient httpClient = new DefaultHttpClient(); 
      HttpPost httpPost = new         HttpPost("http://10.0.3.2/dfsdsd/postjob"); 
      // HttpPost httpPost = new 
      httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
      HttpResponse response = httpClient.execute(httpPost); 
      HttpEntity entity = response.getEntity(); 
      is = entity.getContent(); 
      int code = response.getStatusLine().getStatusCode(); 
      String rescode = String.valueOf(code); 




      //result=is.toString(); 
      return rescode; 
     } catch (MalformedURLException e) { 
      return "No Internet"; 
     } catch (IOException e) { 
      return "No Internet"; 
     } 
    } 
+0

你为什么不使用这个库,它的方便,快捷,高效,背景 –

+0

工作https://github.com/gotev/android-upload-service –

回答

0

使用Retrofil或Okhttp。

public static final String MULTIPART_FORM_DATA = "multipart/form-data"; 

@NonNull 
private RequestBody createPartFromString(String descriptionString) { 
    return RequestBody.create(
     MediaType.parse(MULTIPART_FORM_DATA), descriptionString); 
} 

@NonNull 
private MultipartBody.Part prepareFilePart(String partName, Uri fileUri) { 
// https://github.com/iPaulPro/aFileChooser/blob/master/aFileChooser/src/com/ipaulpro/afilechooser/utils/FileUtils.java 
// use the FileUtils to get the actual file by uri 
File file = FileUtils.getFile(this, fileUri); 

// create RequestBody instance from file 
RequestBody requestFile = 
    RequestBody.create(MediaType.parse(MULTIPART_FORM_DATA), file); 

// MultipartBody.Part is used to send also the actual file name 
return MultipartBody.Part.createFormData(partName, file.getName(), requestFile); 
} 
0

如果你想简单而快速的话,我会建议你ION Library

后的multipart/form-data的和带有上传进度条离子阅读JSON:

Ion.with(getContext()) 
.load("https://koush.clockworkmod.com/test/echo") 
.uploadProgressBar(uploadProgressBar) 
.setMultipartParameter("goop", "noop") 
.setMultipartFile("archive", "application/zip", new File("/sdcard/filename.zip")) 
.asJsonObject() 
.setCallback(...) 
+0

多部分不回答'我需要知道文件上传的完整代码与namevaluepair.'。 – greenapps

+0

我建议你不要使用NameValuePair,因为它是包含org.apache的一部分,它已经被Android 22弃用,并且被Android M删除了 –

+0

好的。然后以不同的方式发送键值对中的文件。这仍然不是多部分。 – greenapps

相关问题