2011-12-14 182 views
0

我正在使用MIME多部分上传图像到服务器。有时图像会变形。如何解决这个问题? 注:扭曲的手段,一些像素丢失。 我使用下面的代码上传:图像在上传时被扭曲

File file = new File(filePath[0]); 
HttpClient httpClient = new DefaultHttpClient(); 
HttpContext localContext = new BasicHttpContext(); 
HttpPost httpPost = new HttpPost("serverurl"); 

MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); 
entity.addPart("Content-Type",new StringBody("multipart/form-data;charset=utf-8")); 
entity.addPart("Content-Length", new StringBody(String.valueOf(file.length()))); 
entity.addPart("UploadContentPostD", new FileBody(file));     
entity.addPart("DocumentName", new StringBody(file.getName())); 

httpPost.setEntity(entity); 
HttpResponse response = httpClient.execute(httpPost,localContext); 
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8")); 

图像失真是: enter image description here

+0

请准确解释你的意思是扭曲?不良的像素/画面比例改变/像素损坏? – Elemental 2011-12-14 14:25:11

+0

像素丢失,所以图像看起来像重叠其他部分 – Sandy 2011-12-14 14:27:24

回答

1

我用Apache Commons上传这里是我上传的代码,每一次完美的作品...

public Integer uploadByteArray(String remoteFilename, byte[] bitmapdata){  
     HttpClient client = new HttpClient(); 
     PostMethod filePost = new PostMethod(URL_PATH); 

     Integer ret = null; 

     try {   
      Part[] parts = new Part[2]; 
      parts[0] = new StringPart("file_name" ,remoteFilename); 

      ByteArrayPartSource ps = new ByteArrayPartSource("file", bitmapdata); 
      parts[1] = new FilePart("file", ps); 

      filePost.setRequestEntity(new MultipartRequestEntity(parts, 
        filePost.getParams())); 

     } catch (Exception e) { 
      Log.d(TAG, e.toString()); 
     } 

     try { 
      ret = client.executeMethod(filePost); 
      Log.d(TAG, "statusCode>>>" + ret); 
      if(ret != 200){ 
       Log.d(TAG, "Error:" + ret + " from server. Please try again later."); 
      }else{ 
       responseBody = filePost.getResponseBodyAsString(); 
       Log.d(TAG, filePost.getResponseBodyAsString()); 
      } 
     } catch (Exception e) { 
      Log.d(TAG, e.toString()); 
     } 

     filePost.releaseConnection(); 

     return ret; 
    } 

如果你继续看到你的问题不断出现,我会在服务器上获得的文件上使用MD5,并将该值发送回resp onse并将其与您发送的文件的本地MD5进行比较。如果他们不一样,你就知道出了问题。