Изпратете изображение с друг низ с многочастна форма json в android

Имам код като този, искам да кача изображение и телефонния си номер в сървъра. Имам код като този,

protected void upload(){

         Intent hasil = getIntent();
         path = hasil.getStringExtra("pathimage");
         mPhoneNumber = hasil.getStringExtra("phone");

         String upLoadServerUri = Constants.url_create_product;
         String fileName = path;
         int serverResponseCode;

         HttpURLConnection conn = null;
         DataOutputStream dos = null;  
         String lineEnd = "\r\n";
         String twoHyphens = "--";
         String boundary = "*****";
         int bytesRead, bytesAvailable, bufferSize;
         byte[] buffer;
         int maxBufferSize = 1 * 1024 * 1024; 
         File sourceFile = new File(path); 
         if (!sourceFile.isFile()) {
          Log.e("uploadFile", "Source File Does not exist");
         // return 0;
         }

            try { // open a URL connection to the Servlet
              FileInputStream fileInputStream = new FileInputStream(sourceFile);
              URL url = new URL(upLoadServerUri);
              conn = (HttpURLConnection) url.openConnection(); // Open a HTTP  connection to  the URL
              conn.setDoInput(true); // Allow Inputs
              conn.setDoOutput(true); // Allow Outputs
              conn.setUseCaches(false); // Don't use a Cached Copy
              conn.setRequestMethod("POST");
              conn.setRequestProperty("Connection", "Keep-Alive");
              conn.setRequestProperty("ENCTYPE", "multipart/form-data");
              conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
              conn.setRequestProperty("prod_image", fileName); 
              dos = new DataOutputStream(conn.getOutputStream());

              dos.writeBytes(twoHyphens + boundary + lineEnd); 
              dos.writeBytes("Content-Disposition: form-data; name=\"prod_image\";filename=\""+ fileName + "\"" + lineEnd);
              dos.writeBytes(lineEnd);

              bytesAvailable = fileInputStream.available(); // create a buffer of  maximum size

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

              // read file and write it into form...
              bytesRead = fileInputStream.read(buffer, 0, bufferSize);  

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

              // send multipart form data necesssary after <span id="IL_AD8" class="IL_AD">file data</span>...
              dos.writeBytes(lineEnd);
              dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

              //kirim phone
              conn.setRequestMethod("POST");
              conn.setRequestProperty("Connection", "Keep-Alive");
              conn.setRequestProperty("ENCTYPE", "multipart/form-data");
              conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
              conn.setRequestProperty("phone", mPhoneNumber); 
              dos = new DataOutputStream(conn.getOutputStream());

              dos.writeBytes(twoHyphens + boundary + lineEnd); 
              dos.writeBytes("Content-Disposition: form-data; name=\"phone\";filename=\""+ mPhoneNumber + "\"" + lineEnd);
              dos.writeBytes(lineEnd);

              bytesAvailable = fileInputStream.available(); // create a buffer of  maximum size

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

              // read file and write it into form...
              bytesRead = fileInputStream.read(buffer, 0, bufferSize);  

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

              // send multipart form data necesssary after <span id="IL_AD8" class="IL_AD">file data</span>...
              dos.writeBytes(lineEnd);
              dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);

              // Responses from the server (code and message)
              serverResponseCode = conn.getResponseCode();
              String serverResponseMessage = conn.getResponseMessage();

              Log.i("uploadFile", "HTTP Response is : " + serverResponseMessage + ": " + serverResponseCode);
              if(serverResponseCode == 200){
                  runOnUiThread(new Runnable() {
                       public void run() {
                        //   tv.setText("<span id="IL_AD6" class="IL_AD">File Upload</span> Completed.");
                           Toast.makeText(Activity3.this, "File Upload Complete.", Toast.LENGTH_SHORT).show();
                       }
                   });                
              }    

              //close the streams //
              fileInputStream.close();
              dos.flush();
              dos.close();

         } catch (MalformedURLException ex) {  
             pDialog.dismiss();  
             ex.printStackTrace();
             Toast.makeText(Activity3.this, "MalformedURLException", Toast.LENGTH_SHORT).show();
             Log.e("Upload file to server", "error: " + ex.getMessage(), ex);  
         } catch (Exception e) {
             pDialog.dismiss();  
             e.printStackTrace();
             Toast.makeText(Activity3.this, "Exception : " + e.getMessage(), Toast.LENGTH_SHORT).show();
             Log.e("Upload file to server Exception", "Exception : " + e.getMessage(), e);  
         }
         pDialog.dismiss();       
       //  return serverResponseCode;  
        } 
}

Но показва грешка:

java lang нулев указател изключение

Наистина се обърквам относно това, кодът ми грешен ли е? Имам нужда от помощ. Благодаря предварително.


person ya Lya    schedule 08.10.2012    source източник
comment
можете ли да публикувате вашия logcat   -  person SquiresSquire    schedule 08.10.2012
comment
поставихте ли допълнително изображение на пътя в намерението си?   -  person JunR    schedule 08.10.2012
comment
да, направих го, но пак грешка   -  person ya Lya    schedule 08.10.2012


Отговори (1)


това е решено, можете да видите моя код тук

как да изпратите изображение (bitmap) към сървър в android с данни от много части json,

Благодаря на всички :))

person ya Lya    schedule 09.10.2012