2011-05-24 55 views
1

私のアプリPHPサーバー経由で画像を送信しようとしています。問題は、PHPプログラマがデータとして送信する必要があると言います。以下は私が現在使っているコードです。イメージをデータに変換してサーバーからの応答を得るのを助けてください。androidのサーバーに画像をアップロードする

InputStream is; 
    private int serverResponseCode; 
    private String serverResponseMessage; 
    @Override 
    public void onCreate(Bundle icicle) 
    { 
     super.onCreate(icicle); 
     setContentView(R.layout.main); 
     HttpURLConnection connection = null; 
     DataOutputStream outputStream = null; 
     DataInputStream inputStream = null; 

     String pathToOurFile = "/sdcard/siva.PNG"; 
     Log.e("pathToOurFile",""+pathToOurFile); 

     String urlServer = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/upload.php"; 
     String lineEnd = "\r\n"; 
     String twoHyphens = "--"; 
     String boundary = "*****"; 
     Log.e("URL Server",""+urlServer); 

     int bytesRead, bytesAvailable, bufferSize; 
     byte[] buffer; 
     int maxBufferSize = 1*1024*1024; 
     Log.e("maxBufferSize",""+maxBufferSize); 

     try 
     { 
      FileInputStream fileInputStream = new FileInputStream(new File(pathToOurFile)); 
      Log.e("FIS",""+fileInputStream); 
      URL url = new URL(urlServer); 
      connection = (HttpURLConnection) url.openConnection(); 

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

      // Enable POST method 
      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); 
      outputStream.writeBytes("Content-Disposition: form-data; name=\"uploadedfile\";filename=\"" + pathToOurFile +"\"" + lineEnd); 
      outputStream.writeBytes(lineEnd); 

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

      // Read file 
      bytesRead = fileInputStream.read(buffer, 0, bufferSize); 

      while (bytesRead > 0) 
      { 
       outputStream.write(buffer, 0, bufferSize); 
       bytesAvailable = fileInputStream.available(); 
       bufferSize = Math.min(bytesAvailable, maxBufferSize); 
       bytesRead = fileInputStream.read(buffer, 0, bufferSize); 
      } 

      outputStream.writeBytes(lineEnd); 
      outputStream.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); 

      // Responses from the server (code and message) 
      Log.e("con",String.valueOf(connection.getDoOutput())); 

      serverResponseCode = connection.getResponseCode(); 
      serverResponseMessage = connection.getResponseMessage(); 
      Log.e("response",""+serverResponseCode); 
      Log.e("serverResponseMessage",""+serverResponseMessage); 

      fileInputStream.close(); 
      outputStream.flush(); 
      outputStream.close(); 
     } 
     catch (Exception ex) 
     { 
      Log.e("Exception Handling",""+ex); 
     } 
     } 

答えて

0

Atlast私は答えを見つけて、私は次の行に

outputStream.writeBytes(「コンテンツディスポジション1ワードのみを変更した上記のコードでは....小さなミスをした:フォームを-data; name = \ "uploadedfile \"; filename = \ "" + pathToOurFile + "" + lineEnd);

上記の行の主要部分は "uploadedfile"という単語です。この単語はPHPプログラマが指定しなければなりません。さもなければ、私たちが送信しているファイルは置き換えられません。

here

関連する問題