0

我有这样的代码,我想在服务器上上传图片和我的电话号码。我有这样的代码,

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空指针异常

我真的很困惑,我的代码错了吗?我需要帮助。提前致谢。

4

1 回答 1

0

它解决了,你可以在这里看到我的代码

如何使用多部分形式的数据 json 将图像(位图)发送到 android 中的服务器

谢谢大家:))

于 2012-10-09T09:33:11.787 回答