2014-09-04 58 views
0

我在頁面上有一個窗體。它有6個文本字段和6個上傳文件字段。我需要將文本和文件路徑寫入數據庫。我在網上看到很多例子,但大部分都是上傳單個文件或從同一上傳字段上傳多個文件。上傳多個圖像以及單個窗體中的文本字段php

我是新來的PHP,所以任何幫助將是非常有用的。

非常感謝提前。

我有這個代碼上傳多個圖像,但不能undestand如何發佈各自的輸入字段與這些圖像。

$valid_formats = array("jpg", "png", "gif", "zip", "bmp"); 
$max_file_size = 1024*100; //100 kb 
$path = "uploads/"; // Upload directory 
$count = 0; 

if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST"){ 
    // Loop $_FILES to exeicute all files 
    foreach ($_FILES['files']['name'] as $f => $name) {  
     if ($_FILES['files']['error'][$f] == 4) { 
      continue; // Skip file if any error found 
     }   
     if ($_FILES['files']['error'][$f] == 0) {    
      if ($_FILES['files']['size'][$f] > $max_file_size) { 
       $message[] = "$name is too large!."; 
       continue; // Skip large files 
      } 
      elseif(! in_array(pathinfo($name, PATHINFO_EXTENSION), $valid_formats)){ 
       $message[] = "$name is not a valid format"; 
       continue; // Skip invalid file formats 
      } 
      else{ // No error found! Move uploaded files 
       if(move_uploaded_file($_FILES["files"]["tmp_name"][$f], $path.$name)) 
       $count++; // Number of successfully uploaded file 
      } 
     } 
    } 
} 
+1

此問題似乎並未涉及幫助中心定義的範圍內的編程。請自己嘗試一下腳本,告訴我們你有什麼問題以及你不明白的地方。如果你需要幫助代碼 – mate64 2014-09-04 12:18:33

+0

這個問題需要更具體。問題是編程非常多,它將文件上傳腳本擴展爲大量文件。它不能用代碼來回答,但在SO上也沒有很多好的問題。 – boisvert 2014-09-04 14:34:21

回答

0

這不會成爲比一個6場有很大不同。

您需要

  • 添加額外的字段文本和文件上傳
  • 使用PHP拿起所有提交的數據
  • 使用SQL語句來插入數據

旅遊小心:

  • 前夕你的表單中的ry字段將會有一個名字。使名稱變得明顯,以便工作很容易完成,例如name="text1",name="file1",name="text2",name="file2"
  • 每個字段每次都會滿嗎?你需要準確的6個字段還是不同的號碼?如果你想上傳任何數量的文件,那麼這是一個不同的故事。您需要使用javascript,也許可以使用ajax來創建一次性1次上傳,其速度快,信息豐富且用戶友好。
  • SQL語句,因爲你需要在接近相同的語句時運行6條語句,查看預準備語句 - 無論如何它們都更好,但在這裏你沒有任何藉口。

更新:現在您的代碼已發佈;您需要修改代碼,以便它將文件名插入到數據庫中。這不是一個困難的變化。

要處理文本字段,有幾種方法。你可以確保它們的編號從text0開始。然後,循環遍歷文件,您可以使用$_POST['text'.$i]$i是循環計數器)獲取相應的文本字段。或者,您可以先創建一個文本值數組,然後將文本值和文件上傳一起處理。

0

你可以這樣做嗎?

<form action=""> 
    <ul> 
     <li> 
      <label> 
       <strong></strong> 
       <input type="text" name="name1" /> 
      </label> 
     </li> 
     <li> 
      <label> 
       <strong></strong> 
       <input type="file" name="file1" /> 
      </label> 
     </li> 
     <li> 
      <label> 
       <strong></strong> 
       <input type="text" name="name2" /> 
      </label> 
     </li> 
     <li> 
      <label> 
       <strong></strong> 
       <input type="file" name="file2" /> 
      </label> 
     </li> 
     <li> 
      <label> 
       <strong></strong> 
       <input type="text" name="name3" /> 
      </label> 
     </li> 
     <li> 
      <label> 
       <strong></strong> 
       <input type="file" name="file3" /> 
      </label> 
     </li> 
     <li> 
      <label> 
       <strong></strong> 
       <input type="text" name="name4" /> 
      </label> 
     </li> 
     <li> 
      <label> 
       <strong></strong> 
       <input type="file" name="file4" /> 
      </label> 
     </li> 
     <li> 
      <label> 
       <strong></strong> 
       <input type="text" name="name5" /> 
      </label> 
     </li> 
     <li> 
      <label> 
       <strong></strong> 
       <input type="file" name="file5" /> 
      </label> 
     </li> 
     <li> 
      <label> 
       <strong></strong> 
       <input type="file" name="file6" /> 
      </label> 
     </li> 
     <li><input type="submit"></li> 
    </ul> 
</form> 

而在PHP中,你可以趕上他們這樣說:

<?php 
    if (count($_FILES) > 0) { 

    } 
?> 
+0

對不起,我沒有清楚我的問題。我需要上傳多個圖像以及文本字段。 例如: 文本1和圖像1 文本2和圖像2等等...... – 2014-09-04 12:10:47

+0

@sachinBhalerao對不起,我在我的答案中犯了一個錯誤! 1秒。 – 2014-09-04 12:12:51

+0

@sachinBhalerao現在查看答案。 – 2014-09-04 12:13:53

相關問題