这是我的错误:
(在第55行添加了注释)一个想法是修改脚本以不必移动文件,但不知道如何做到这一点。不确定这是否可行,因为我需要将其输出到文件最初具有相同名称的uploads文件夹。
<html>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
Title:<br>
<input type="text" name="imgTitle" required><br><br>
Upload a File: <input type="file" name="imgUploaded" id="imgUploaded"><br><br>
Comments: <br>
<textarea name="imgDesc" rows="4" cols="35"required></textarea><br><br>
<input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>
<?php
if (isset($_POST["submit"]) ) {
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["imgUploaded"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
$imgTitle = $_POST['imgTitle'];
$imgDesc = $_POST['imgDesc'];
$servername = "sn";
$username = "un";
$password = "pw";
$dbname = "db";
echo $imgDesc;
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["imgUploaded"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
} else {
echo "File is not an image.";
$uploadOk = 0;
}
}
if (file_exists($target_file)) {
echo "Sorry, file already exists.";
$uploadOk = 0;
}
if ($_FILES["imgUploaded"]["size"] > 500000) {
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
} else {
if (move_uploaded_file($_FILES["imgUploaded"]["tmp_name"],$target_file)) // this is line 55
{
$imgPath = $_FILES["imgUploaded"]["name"];
$conn = mysqli_connect($servername, $username, $password, $dbname);
$sql = "INSERT INTO BrianJones (sqlName, sqlDesc, sqlPath)
VALUES ('$imgTitle', '$imgDesc', '$imgPath')";
if (mysqli_query($conn, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
echo "The file ". basename( $_FILES["imgUploaded"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
}
?>
不确定如何解决此问题,显然在尝试将临时图像移动到uploads文件夹时出错,因为我没有权限。我怎么能绕过这个?
注意:我不能给自己任何权限,它在localhost上运行正常,但我必须将其上传到Web服务器并进行测试,我只能修改php而不更改任何服务器设置。
答案 0 :(得分:1)
从你的错误。
我建议修改文件夹权限以便能够写入。
答案 1 :(得分:0)
试试这个,它用于移动和上传任何文件和图像并将其存储到数据库。
if(isset($_POST['submit'])!=""){
$name=$_FILES['file']['name'];
$size=$_FILES['file']['size'];
$type=$_FILES['file']['type'];
$temp=$_FILES['file']['tmp_name'];
$caption1=$_POST['caption'];
$link=$_POST['link'];
move_uploaded_file($temp,"upload/".$name);
}