Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP上传图像_Php - Fatal编程技术网

使用PHP上传图像

使用PHP上传图像,php,Php,我正在制作一个表单,在这个表单中,如果用户喜欢使用jQueryAjax和PHP,他可以上传数据和图像。到目前为止,在数据方面一切都很好,但是在图像上传PHP中,我在将文件上传到正确的位置时遇到了问题。查询工作正常,并将正确的数据提交到表中。你能帮我上传图片吗。我试着使用一些东西进行调试,但到目前为止,一切都正常 以下是我的php文件脚本: if(isset($_POST['discussion_title'], $_POST['discussion_subjects'], $_POST['dis

我正在制作一个表单,在这个表单中,如果用户喜欢使用jQueryAjax和PHP,他可以上传数据和图像。到目前为止,在数据方面一切都很好,但是在图像上传PHP中,我在将文件上传到正确的位置时遇到了问题。查询工作正常,并将正确的数据提交到表中。你能帮我上传图片吗。我试着使用一些东西进行调试,但到目前为止,一切都正常

以下是我的php文件脚本:

if(isset($_POST['discussion_title'], $_POST['discussion_subjects'], $_POST['discussion_textarea'])) {
    $user_id = (int)$_SESSION['user_id'];
    $title = mysql_prep($_POST['discussion_title']);
    $link = mysql_prep($_POST['discussion_link']);
    $subject = mysql_prep($_POST['discussion_subjects']);
    $discussion = mysql_prep($_POST['discussion_textarea']);
    $discussion_timestamp = time();

    if ($_FILES["discussion_image"]["name"] != "") {
        $test = explode(".", $_FILES["discussion_image"]["name"]);
        $extension = end($test);
        $name = rand(100, 9999999999);
        $file_temp = $_FILES['discussion_image']['tmp_name'];
        $file_path = 'uploaded_pictures/uploads/' . $user_id . '/'. $name .'.'.$extension;
        $file_path = mysqli_real_escape_string($connection, $file_path);
        move_uploaded_file($file_temp, $file_path); // move_uploaded_file() is a built in function of PHP

        $query = "INSERT INTO discussions_table (user_id, title, link, image_link, subject, discussion, discussion_timestamp) VALUES ($user_id, '$title', '$link', '$file_path', '$subject', '$discussion', $discussion_timestamp)";

        //$save_path = "uploaded_pictures/uploads/" . $user_id ."/$user_id.png";
        $save_path = 'uploaded_pictures/uploads/' . $user_id . '/'. $name.'.'.$extension;
        $save_path_small = "uploaded_pictures/uploads/" . $user_id . "/" . $name.'small.'.$extension;
        create_thumbnail($file_path, $save_path, 250, 250); // creates thumbnail for profile picture
        create_thumbnail($file_path, $save_path_small, 50, 50); // creates thumbnail for small user picture
        var_dump($_FILES['discussion_image']['tmp_name']);
    } else {
        $query = "INSERT INTO discussions_table (user_id, title, link, subject, discussion, discussion_timestamp) VALUES ($user_id, '$title', '$link', '$subject', '$discussion', $discussion_timestamp)";
    }
    $result = mysqli_query($connection, $query);
}
下面是alert()中给出的错误,因为我使用了var_dump
警告:移动上传文件(上传图片/uploads/20/499297822.jpg)[function.move uploaded file]:无法打开流:第22行的D:\wamp\www\asserter\widgets\discussion\u board\u submit.php中没有此类文件或目录

警告:移动上传的文件()[function.move upload file]:无法将第22行D:\wamp\www\asserter\widgets\discussion\u board\u submit.php中的“D:\wamp\tmp\php260.tmp”移动到“upload\pictures/uploads/20/499297822.jpg”
警告:getimagesize(Upload\u pictures/uploads/20/499297822.jpg)[function.getimagesize]:无法打开流:第4行的D:\wamp\www\asserter\includes\create\u thumbnail.php中没有这样的文件或目录

警告:getimagesize(Upload\u pictures/uploads/20/499297822.jpg)[function.getimagesize]:无法打开流:第4行的D:\wamp\www\asserter\includes\create\u thumbnail.php中没有这样的文件或目录

字符串(22)“D:\wamp\tmp\php260.tmp”

正常工作。谢谢大家的帮助。问题是目录,我应该回去../才能上传图像

-用这个来创建目录,我在那边回答了。它将帮助您为多用户创建目录。以后你可以得到哪个用户上传了哪些文件

对于php中错误未定义的偏移量:1,您应该使用isset()为
$src_pos[1]、$new_size[0]、$new_size[1]、$size[0]、$size[1]

请您仔细检查这是否是正确的上传路径“上传图片/上传”,是否可由Apache写入。我不认为您可以对目标使用类似“上传图片/上传…”的相对路径。尝试使用绝对路径,如“D:\wamp\www\asserter\widgets\upload\u图片/上传…”取而代之的是,上传图片中是否有名为目录的上传,第二件事是尝试使用完整路径名D:\wamp\www\asserter\widgets\upload\u pictures/uploads。只有上传目录存在时,这才有效。是的,路径是正确的,我在profile picture upload的另一个页面上使用了类似的路径,效果很好,但是在这里,我不得不更改图片名称的一些变量,但它不起作用:/您的错误似乎没有正确地给出目录,请遵循此操作..这可能有助于您创建目录,但它不是上述问题的正确答案!另外,若您正在为多用户规划数据库,那个么您应该像我在上面的链接中提到的那个样创建目录。它将帮助您确定哪个用户上载了哪些配置文件图像/文件。好的,我正在其他函数中创建目录,以便每个用户都可以获得自己的目录。现在我遇到了另一个问题,这是:
注意:未定义的偏移量:D:\wamp\www\asserter\includes\create_thumbnail.php中的1,在这行代码中:
imagecopyresampled($thumb,$src,0,0,$src_pos[0],$src_pos[1],$new_size[0],$new_size[1])这就是为什么建议提供完整路径是返回错误可以通过提供完整路径来解决我发现了错误!这是一个命名问题这是一个创建缩略图的函数我不能在这里发布它,因为它不适合,它在另一个上传配置文件图像的页面上同样可以完美地工作,但在这里它在表单postOk的这个页面上给出了这个错误,我理解。您可以在该函数外部或内部使用Isset()设置它吗?必须设置数组索引您的意思是什么?偏移量1是否表示第二个参数?您也可以在Php中搜索未定义的索引:1。它给出了如何设置的想法。