我正在构建一个媒体,我想要我的用户 上传尽可能多的图片,但我的问题 是如何将此图像保存或移动到文件夹 叫照片包含在名为my_media的文件夹中, my_media文件夹包含我的php文件,例如 index.php等等,我可以将此文件移动到 my_media文件夹一旦上传,但我不想要 请将文件用于安全目的 有人应该修复我的代码谢谢。
这是我的代码
require_once ('connect.php');
if (isset($_POST['Submit'])) {
$tmp_dir = "my_media/photo";
//it will move to my_media if assign my_media only to the variable $tmp_dir
//but don't work with $tmp_dir = "my_media/photo"
$tmp_name = $_FILES["image"]["tmp_name"];
$name = $_FILES["image"]["name"];
move_uploaded_file($tmp_name,$tmp_dir . basename($name));
//rename("my_media/photo","my_media/photo". basename($name));
$location=$name;
$fname=$_POST['first_name'];
$lname=$_POST['last_name'];
$sql = "INSERT INTO tbl_image (first_name, last_name, image_location)
VALUES ('$fname', '$lname', '$location')";
$res = mysqli_query($con,$sql);
//with this my the image name is inserted into my database but not into the foldermy_media/photo
header("Location:imgview.php");
}
答案 0 :(得分:0)
require_once ('connect.php');
if (isset($_POST['submit'])) {
$tmp_dir = "/my_media/photo/";
$name = time().$_FILES["image"]["name"];
move_uploaded_file($_FILES["image"]["tmp_name"], $name);
$location=$name;
$fname=$_POST['first_name'];
$lname=$_POST['last_name'];
$sql = "INSERT INTO tbl_image (first_name, last_name, image_location)
VALUES ('$fname', '$lname', '$location')";
$res = mysqli_query($con,$sql);
header("Location:imgview.php");
}
答案 1 :(得分:0)
首先,让我们删除所有/
并将其替换为PHP DIRECTORY_SEPARATOR
。
$tmp_dir = "my_media". DIRECTORY_SEPARATOR . "photo" . DIRECTORY_SEPARATOR ;
第二,为确保您有权写入该文件夹,请让PHP创建该文件夹。
要使其正常工作,请先删除您创建的文件夹。
if(!is_dir($tmp_dir)){
mkdir($tmp_dir);
move_uploaded_file($tmp_name,$tmp_dir . basename($name));
}else{
move_uploaded_file($tmp_name,$tmp_dir . basename($name));
}
最后但并非最不重要的是,您对SQL注入持开放态度。请改用预备语句。 Example