2011-12-14 7 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

+0

ピクセルが失われて画像が一部に重なっているように見える – Sandy

答えて

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でその値を送り返しますあなたが送信したファイルのローカルMD5と比較してください。彼らが同じでない場合、あなたは何かが間違っていたことを知っています。

+0

これをチェックします。返信ありがとうございます – Sandy

+0

私のコードでも同じApacheライブラリを使用しています...しかし時にはそれが壊れて、添付の画像を参照してください – Sandy

+0

私が言ったように、あなたは受信したファイルのMD5をやりたいと思うでしょうファイルがソースクライアントのバージョンと同一ではありません。 –

関連する問題