如何使用php获取input type =“file”中所选文件的路径?

时间:2015-01-06 08:23:34

标签: php mysql

我想获取所选文件的路径并将其存储在数据库中以备将来使用。 我有以下代码,但它不起作用。

$path = $_FILES['txtImage']['tmp_name'];
$sql = "INSERT INTO tblquestions (q_category, q_question, q_image, q_correct, q_answer2, q_answer3, q_answer4) VALUES ('$_POST[txtCategory]','$_POST[txtQuestion]','$path','$_POST[txtCorrect]','$_POST[txtChoice2]','$_POST[txtChoice3]','$_POST[txtChoice4]')";

txtImage是我的输入类型=“文件”的名称,$ path是我正在使用的代码,但它不起作用。它只是空白。

任何可以帮助我或引导我采用不同的,希望更容易的方法的人?先感谢您。 :)

3 个答案:

答案 0 :(得分:2)

PHP会将提交的文件存储在一个临时目录中,您不应该将其存储在数据库中,因为它会不稳定。

使用PHP的move_uploaded_file函数将文件移动到文件系统中您喜欢的位置,然后将该路径存储在数据库中。

文档:http://php.net/manual/en/function.move-uploaded-file.php

答案 1 :(得分:1)

您是否在HTML端正确设置了表单enctype,以便它能够正常工作。 其次,TMP只是一个临时位置,您必须使用PHP function move_uploaded_file将该文件移动到服务器可读目录 阅读有关enctypes,in this answeron w3 schools.

的信息
<form name="YourForm" method="post" enctype="multipart/form-data" action="">

答案 2 :(得分:1)

$tmp_path = $_FILES['txtImage']['tmp_name'];

$dest_path = path_where_in_your_server_you_want_this_image_to_be_moved.$_FILES['textImage']['name']; (eg: 'images/'.$_FILES['name'])

if(move_uploaded_file($tmp_path,$dest_path)){ //this will move the file from tmp   location in server to the destination you provide in the second parameter

$sql = "INSERT INTO tblquestions (q_category, q_question, q_image, q_correct, q_answer2,  q_answer3, q_answer4) VALUES ('$_POST[txtCategory]','$_POST[txtQuestion]','$dest_path','$_POST[txtCorrect]','$_POST[txtChoice2]','$_POST[txtChoice3]','$_POST[txtChoice4]')";

}else{

 echo "Image could not be uploaded"

}

另请注意,在上传文件时可能存在权限问题(您希望将图像上传到的目录)。

祝你好运!