2013-08-28 159 views
0

(初學者)通過PHP上傳文件

上傳我的文件時遇到了問題。我看到文件名被髮布到數據庫,但該文件沒有被髮布到圖像文件夾。似乎沒有任何事情發生。這是我下面的代碼,請告訴我什麼,我需要改變:

<?php 
//the $art variable gets posted to a database eventually 
    $art = mysql_real_escape_string(stripslashes($_FILES["art"]["name"])); 
$art_ext = pathinfo($art, PATHINFO_EXTENSION); 
$art = md5($art).".".$art_ext; 
if($art!=""){ 
    move_uploaded_file($art, "images/".$art); 
} 
?> 
<script type="text/javascript"> 
$(function(){ 
    image_upload = { 
     UpdatePreview: function(obj){ 
      // if IE < 10 doesn't support FileReader 
      if(!window.FileReader){ 
      // don't know how to proceed to assign src to image tag 
      } else { 
      var reader = new FileReader(); 
      var target = null; 

      reader.onload = function(e) { 
       target = e.target || e.srcElement; 
       $("#imageupload").attr("src", target.result); 
      }; 
       reader.readAsDataURL(obj.files[0]); 
      } 
     } 
    }; 
}); 
    </script> 
    <form action="new.php" method="post" enctype="multipart/form-data"> 
<input type='file' name='art' id="file" onchange='image_upload.UpdatePreview(this)' value="Upload" accept="image/gif,image/jpeg,image/png"/> 
     </p> 
     <p>upload a image! (.gif, .jpg, .png formats allowed. 5MB max)</p> 
     <img id="imageupload" src="1x1.png" alt="test" /> 
<input type="submit" class="smallbtn4" style="cursor:pointer;" value="post"/> 
</form> 
+1

看來我要與文件名的問題。 move_uploaded_file函數的第一個變量是上傳文件的實際名稱 - 首先你不能使用md5。你可能打算做的是用md5哈希名稱保存它。回顧函數的定義,我們看到以下內容:'bool move_uploaded_file(string $ filename,string $ destination)' - 如果您是英語用戶,我建議您查找並下載'php_enhanced_en.chm'。這是PHP幫助文件,增強了來自PHP站點的用戶註釋。它大約是29MB(它包含1000個代碼片段) – enhzflep

回答

1

這裏的格式move_uploaded_file()

$path = 'images/'; 
move_uploaded_file($_FILES['art']['tmp_name'], $path.basename($_FILES['art']['name'])); 
+0

真棒! 我做了以下 'move_uploaded_file($ _ FILES ['art'] ['tmp_name'],「images /".$ art);' –

+0

如果您使用我的圖書館https://www.PHPglue.com它可能讓你的生活變得更輕鬆。 – PHPglue

1
使用 move_uploaded_files()你的目標路徑還應該包括文件的 名稱時

....現在您的目的地路徑是:

images/ 

它應該是:

images/nameOfImg.ext 

希望這有助於!

編輯:

眼看着@enhzflep的評論後,你還應該散列文件的名稱和move_uploaded_file使用它之前創建的文件名字符串();

+0

好吧,我改變了一些東西,我實際上看到文件正在上傳,但我仍然沒有在文件路徑中看到它。 '$ art = mysql_real_escape_string(stripslashes($ _ FILES [「art」] [「name」])); \t $ art_ext = pathinfo($ art,PATHINFO_EXTENSION); \t $ art = md5($ art)。「。」。$ art_ext; \t if($ art!=「」){ \t \t move_uploaded_file($ art,「images /".$ art); \t} ' –