2017-11-04 77 views
-1

我有兩個PHP頁面adp3.php(表單頁面)和adp4.php(上傳內容數據庫)如何使用php存儲數據庫中的文件路徑?

adp3.php:

<form method="POST" enctype="multipart/form-data"> 
<label>SUBJECT:</label><select name="subject"> 
<?php 
$query="SELECT * FROM subject WHERE SyllabusID=".$batch1." and SemID=".$sems.""; 
$result=mysqli_query($con, $query); 
//loop 
foreach($result as $subject){ 
?> 
<option value="<?php echo $subject['SubjectID']."-".$subject['SubjectName']; ?>"><?php echo $subject['SubjectName']; ?></option> 
<?php 
} 
?> 
    </select> 
    <br> 
DATE: <select name="date"> 
    <option>MAY/JUNE</option> 
    <option>NOV/DEC</option> 
    </select> 

    <p color="white">YEAR: <input type="varchar" name="year"/></p></br> 

    <p color="white">PAPER LINK: <input type="file" name="file"/></p></br> 
     <br> 
     <button formaction="adp4.php" class="btn-login">GO</button> 

adp4:

<?php 
$date =$_POST['date']; 
$year=$_POST['year']; 
$file=$_FILES['file']; 

    if($date && $year) 
    { mysql_connect("localhost","root","") or die("we couldnt connect"); 
     mysql_select_db("dbmsproj"); 
     $result=mysql_query("INSERT INTO paper(SubjectID,Date,Dlink) values('$subid','$date $year','$file')"); 

     ?> <p color="white"><?php echo "Paper SUCCESSFULLY ADDED TO THE DATABASE"; 
    } 
    else 
    {?> 
     <p color="white"><?php echo "ALL FIELDS NEED TO BE FILLED "; 
    } 
     ?> 

除了文件路徑之外,一切都正確進入DB(顯示文件路徑字段中的「數組」)..請幫助

更新:(問題已解決)謝謝你們幫助我。我的代碼終於工作了。你們是最好的

+0

你必須manualy使用'move_uploaded_file(把你的文件到您的目錄)'然後插入路徑數據庫字段 –

+0

我不會存放的路徑,只有文件名。路徑可能會發生變化,如果您在某個時間點發生移動,則不會希望更新所有這些記錄。 (或使用符號鏈接,yuck)例如,在我的工作中,我們在數據庫中存儲了90,000個pdf,我們在過去的4年中已經跨3個服務器遷移。 (和一個域名) – ArtisticPhoenix

+0

我推薦的另一件事是使用散列重命名文件。 (如sha1),然後用時間戳和散列'time()。hash()。pdf'將它保存到文件系統中然後將用戶的文件名(原始名稱)保存在數據庫中(這樣就可以僞造它, )。你不會相信廢話PPL放在文件名,所有類型的東西,你的URL和什麼不起來。我甚至有人把''''或'''放在文件名中,這是壞的mojo。爲什麼看到https://stackoverflow.com/questions/28504839/how-to-delete-a-file-with-quote-在文件名 – ArtisticPhoenix

回答

0

首先你檢查你插入什麼: 這個。

print_r($_FILES["file"]); 
+0

非常感謝你..因爲你們都是我的代碼終於工作 – user8883996

-1

如果訪問文件名不是你必須做這樣的

$文件= $ _FILES [「文件」] [「名稱」];

+0

但我想要的文件路徑。 – user8883996

1

嘗試使用的$ _ POST [ '文件']而不是使用$ _FILE因爲你只需要知道文件路徑

編輯:

至於文檔,$ _FILES []返回包含您上傳文件的所有信息的數組。 使用該陣列可以使用

$file=$_FILES['file']['temp_name']; 

上面的代碼將爲您提供服務器

又見內上傳文件的相關臨時名稱獲得與文件的路徑的臨時名稱:PHP Documentation

爲了進一步檢查這些是存儲陣列內的數據(至於PHP文檔):

$_FILES['userfile']['name'] 

客戶機上文件的原始名稱。

$_FILES['userfile']['type'] 

該文件的MIME類型,如果瀏覽器提供了該信息。一個例子就是「image/gif」。然而,這種MIME類型在PHP方面沒有被檢查,因此不會將其值視爲理所當然。

$_FILES['userfile']['size'] 

上傳文件的大小(以字節爲單位)。

$_FILES['userfile']['tmp_name'] 

上傳文件存儲在服務器上的臨時文件名。

$_FILES['userfile']['error'] 

與此文件上傳相關的錯誤代碼。

+0

我試過了。但它顯示數據庫中的空字段 – user8883996

+0

檢查編輯,它會幫助你 –

+0

謝謝我的代碼現在正在工作 – user8883996

0

檢查這可能有助於。

$filePath = realpath($_FILES["file"]["tmp_name"]); 
+0

這沒有提供答案這個問題。要批評或要求作者澄清,請在其帖子下方留言。 - [來自評論](/ review/low-quality-posts/17835741) –

+0

謝謝終於工作 – user8883996

+0

請接受答案。 –

相關問題