2014-12-25 55 views
0

我已經閱讀了很多關於將圖像上傳到服務器的文章,但我仍然有一個問題。圖像成功存儲在我的文件夾路徑中,但是當我在phpmyadmin中打開數據庫表時,圖像未存儲在那裏。將圖像上傳到服務器並存儲在MySQL數據庫中

我的問題是,如何修改代碼以將圖像路徑額外保存到MySql數據庫,圖像成功存儲在目標文件夾後?請幫助。

對於completition我顯示上傳圖像到服務器我當前的代碼:

upload.java:

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

     if (requestCode == 1 && resultCode == RESULT_OK) { 
       //Bitmap photo = (Bitmap) data.getData().getPath(); 

       Uri selectedImageUri = data.getData(); 
       imagepath = getPath(selectedImageUri); 
       Bitmap bitmap=BitmapFactory.decodeFile(imagepath); 
       imageview.setImageBitmap(bitmap); 
       messageText.setText("Uploading file path:" +imagepath); 

     } 
     } 
      public String getPath(Uri uri) { 
       String[] projection = { MediaStore.Images.Media.DATA }; 
       Cursor cursor = managedQuery(uri, projection, null, null, null); 
       int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
       cursor.moveToFirst(); 
       return cursor.getString(column_index); 
      } 

     public int uploadFile(String sourceFileUri) { 


      String fileName = sourceFileUri; 

       HttpURLConnection conn = null; 
       DataOutputStream dos = null; 
       String lineEnd = "\r\n"; 
       String twoHyphens = "--"; 
       String boundary = "*****"; 
       int bytesRead, bytesAvailable, bufferSize; 
       byte[] buffer; 
       int maxBufferSize = 1 * 512 * 512; 
       File sourceFile = new File(sourceFileUri); 

       if (!sourceFile.isFile()) { 

       pDialog.dismiss(); 

       Log.e("uploadFile", "Source File not exist :"+imagepath); 

       runOnUiThread(new Runnable() { 
        public void run() { 
        messageText.setText("Source File not exist :"+ imagepath); 
        } 
       }); 

       return 0; 

       } 
       else 
       { 
       try { 

        // open a URL connection to the Servlet 
        FileInputStream fileInputStream = new FileInputStream(sourceFile); 
        URL url = new URL(upLoadServerUri); 

        // Open a HTTP connection to the URL 
        conn = (HttpURLConnection) url.openConnection(); 
        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("uploaded_file", fileName); 

        dos = new DataOutputStream(conn.getOutputStream()); 

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

        dos.writeBytes(lineEnd); 

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

        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 file data... 
        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() { 
           String msg = "File Upload Completed.\n\n See uploaded file here : \n\n" 
             +" D:/food/adminweb/foto_berbagi_masakan/"; 
           messageText.setText(msg); 
           Toast.makeText(Berbagi_Resep.this, "File Upload Complete.", Toast.LENGTH_SHORT).show(); 
          } 
         });     
        }  

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

       } catch (MalformedURLException ex) { 

        pDialog.dismiss(); 
        ex.printStackTrace(); 

        runOnUiThread(new Runnable() { 
         public void run() { 
         messageText.setText("MalformedURLException Exception : check script url."); 
          Toast.makeText(Berbagi_Resep.this, "MalformedURLException", Toast.LENGTH_SHORT).show(); 
         } 
        }); 

        Log.e("Upload file to server", "error: " + ex.getMessage(), ex); 
       } catch (Exception e) { 

        pDialog.dismiss(); 
        e.printStackTrace(); 

        runOnUiThread(new Runnable() { 
         public void run() { 
         messageText.setText("Got Exception : see logcat "); 
          Toast.makeText(Berbagi_Resep.this, "Got Exception : see logcat ", Toast.LENGTH_SHORT).show(); 
         } 
        }); 
        Log.e("Upload file to server Exception", "Exception : " + e.getMessage(), e); 
       } 
       pDialog.dismiss();  
       return serverResponseCode; 

       } // End else block 
      } 

這對於uploadToServer.php:

<?php 
    include '../config/koneksi.php'; 

     $file_path = "adminweb/foto_berbagi_resep/"; 
      $file_path = $file_path . basename($_FILES['uploaded_file']['name']); 
      if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) { 

      $link = mysql_connect($host,$database); 
      mysql_query($link, "INSERT INTO 'gambar_upload' (gambar) VALUES('".$file_path."')"); /*or trigger_error($link->error."[ $sql]");*/ 
      mysql_close($link); 

      } 

      else{ 
        echo "fail"; 
      } 
    ?> 
+0

1.使用PDO - >給你更好的安全性。 2.你有什麼錯誤嗎? – Eugen

+0

感謝您的建議歐根.. –

回答

0

像eugen說,使用PDO或mysqli。 你也可以使用mysqli非常類似於「舊」的mysql適配器。

$link = mysql_connect($host,$database); 
mysql_query($link, "INSERT INTO 'gambar_upload' (gambar) VALUES('".$file_path."')"); 
mysql_close($link); 

它應該是這樣的:

$link = mysqli_connect("myhost","myuser","mypassw","mybd"); 
$filepath = mysqli_real_escape_string($link, $file_path); 
$query = "INSERT INTO 'gambar_upload' (gambar) VALUES('".$filepath."')"; 
mysqli_query($link, $query); 
mysqli_close($link); 

另一個例子可以在這裏找到:http://php.net/manual/de/mysqli.real-escape-string.php

+0

謝謝你斯特凡:) 我試過你的代碼後,現在我可以將圖像存儲到我的數據庫。 –

+0

我的榮幸,你應該總是使用** mysqli_real_escape_string ** **來防止sql注入** – stefan

相關問題