Php Can';t将文件上载到服务器文件夹

Php Can';t将文件上载到服务器文件夹,php,file-upload,Php,File Upload,我正在尝试从html表单上传一个文件,以便该文件进入特定文件夹,并将路径上传到数据库。 数据库部分工作正常,但文件未转到我的目标文件夹。 我将文件夹权限设置为777,在php.ini文件中,file_uploads=on <?php require 'config.php'; $connection = new mysqli($servername, $username, $password, $db); foreach ($_FILES['upload']['name'] as $

我正在尝试从html表单上传一个文件,以便该文件进入特定文件夹,并将路径上传到数据库。 数据库部分工作正常,但文件未转到我的目标文件夹。 我将文件夹权限设置为777,在php.ini文件中,file_uploads=on

<?php

require 'config.php';

$connection = new mysqli($servername, $username, $password, $db);

foreach ($_FILES['upload']['name'] as $key => $name) {

   if( move_uploaded_file($_FILES['upload']['name'][$key], '/upload_test/' . 
   $name)){
    echo "Uploaded";
} else {
    echo "Debug ", print_r($_FILES);
};

$path = '/upload_test/' . $name;

mysqli_query($connection, "insert into docs (path) values ('$path')");
}
?>
<script src="addInput.js" type="text/javascript"></script>

<form method="POST" action="upload.php" enctype="multipart/form-data">
    <div id="dynamicInput">
        <input type="file" name="upload[]" multiple><input type="button" 
        value="+" onClick="addInput('dynamicInput');">
    </div>
    <input type="submit" value="Upload">
</form>

您必须将临时文件移动到新的目标!在您的情况下,您试图将原始文件名移动到目标文件夹

这应该可以

move_uploaded_file($_FILES['upload']['tmp_name'][$key], '/upload_test/' . $name);

您必须将临时文件移动到新的目标!在您的情况下,您试图将原始文件名移动到目标文件夹

这应该可以

move_uploaded_file($_FILES['upload']['tmp_name'][$key], '/upload_test/' . $name);

根据您的评论,您似乎试图上载到错误的目录:

if (move_uploaded_file($_FILES['upload']['tmp_name'][$key], '/upload_test/' . $name)) {
请注意路径
'/upload\u test/$名称
位于文件系统的根目录上,因为它以斜杠开始

如果要将文件移动到与当前运行脚本的目录相对的目录,则需要:

if (move_uploaded_file($_FILES['upload']['tmp_name'][$key], 'upload_test/' . $name)) {
                                                             ^ relative to the current path
由于相对路径容易导致混淆,您还可以设置一个变量来定义相对于文件系统根的网站根,或者使用php提供的值,
$\u SERVER['DOCUMENT\u root']

例如:

define('WEBROOT', '/var/www/html');
...
if (move_uploaded_file($_FILES['upload']['tmp_name'][$key], 
    WEBROOT . '/multiple_file_upload/upload_test/' . $name)) {
或:


根据您的评论,您似乎试图上载到错误的目录:

if (move_uploaded_file($_FILES['upload']['tmp_name'][$key], '/upload_test/' . $name)) {
请注意路径
'/upload\u test/$名称
位于文件系统的根目录上,因为它以斜杠开始

如果要将文件移动到与当前运行脚本的目录相对的目录,则需要:

if (move_uploaded_file($_FILES['upload']['tmp_name'][$key], 'upload_test/' . $name)) {
                                                             ^ relative to the current path
由于相对路径容易导致混淆,您还可以设置一个变量来定义相对于文件系统根的网站根,或者使用php提供的值,
$\u SERVER['DOCUMENT\u root']

例如:

define('WEBROOT', '/var/www/html');
...
if (move_uploaded_file($_FILES['upload']['tmp_name'][$key], 
    WEBROOT . '/multiple_file_upload/upload_test/' . $name)) {
或:


上载目录是否真的位于文件系统的根目录上?文件系统的根目录是什么意思?所有文件都在一个文件夹/多个文件上传中。这是剧本。上载文件夹位于该文件夹内,因此:/multiple\u file\u upload/upload\u test上载目录是否确实位于文件系统的根目录上?文件系统的根目录是什么意思?所有文件都在一个文件夹/多个文件上传中。这是剧本。上载文件夹位于该文件夹内,因此:/multiple\u file\u upload/upload\u test不幸的是,这不起作用。它也有同样的行为。不幸的是,这不起作用。它也有同样的行为,这很有效!这是你的代码和@Klaus所说的结合!谢谢大家@Serrano是的,我错过了关于
tmp\u名称的部分,我将在中编辑它以完成。@jereon如果我不想直接上传到/upload\u测试,而是想根据数据库中的id创建一个子文件夹呢?回答很好。不要太小也不要太大;恰到好处;-)@杰伦称之为“团队成功”(努力);-)成功了!这是你的代码和@Klaus所说的结合!谢谢大家@Serrano是的,我错过了关于
tmp\u名称的部分,我将在中编辑它以完成。@jereon如果我不想直接上传到/upload\u测试,而是想根据数据库中的id创建一个子文件夹呢?回答很好。不要太小也不要太大;恰到好处;-)@杰伦称之为“团队成功”(努力);-)