Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.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 mysql将文件上载到服务器_Php_Mysql - Fatal编程技术网

使用php mysql将文件上载到服务器

使用php mysql将文件上载到服务器,php,mysql,Php,Mysql,我通过填写表格将文件上传到服务器。应该上传文件,并在mysql表中创建一个包含许多数据的记录。这是我指定上载路径的方式: $upload_path = "upload/"; 在public_html文件夹中,我有所有必要的.php文件和预创建的上传文件夹。上传成功,mysql表有一条新记录,一切似乎都很好,只是我看不到public_html/upload文件夹中的文件 我知道这一定是个新手问题,我需要帮助 $allowed_filetypes = array('.jpg','.gif',

我通过填写表格将文件上传到服务器。应该上传文件,并在mysql表中创建一个包含许多数据的记录。这是我指定上载路径的方式:

$upload_path = "upload/";
在public_html文件夹中,我有所有必要的.php文件和预创建的上传文件夹。上传成功,mysql表有一条新记录,一切似乎都很好,只是我看不到public_html/upload文件夹中的文件

我知道这一定是个新手问题,我需要帮助

   $allowed_filetypes = array('.jpg','.gif','.bmp','.png','.tif','.doc','.docx','.xls','.xlsx','.pdf','.psd');
     $filename = $_FILES['file']['name'];
     $max_filesize = 524288; //0.5MB
     $ext = substr($filename, strpos($filename,'.'), strlen($filename)-1);
     //$upload_path = "C:/wamp/www/upload/";    //'./files/';
     $upload_path = "upload/";
      if(!in_array($ext,$allowed_filetypes))
      {
        die('The file you attempted to upload is not allowed or you haven not selected any files!');
      }
      if(filesize($_FILES['file']['tmp_name']) > $max_filesize)
      {
        die('The file you attempted to upload is too large.');
      }
      if(!is_writable($upload_path))
      {
        die('Invalid or non-writable folder');
      }


      if (file_exists($upload_path . $_FILES["file"]["name"]))
      {
        //echo $_FILES["file"]["name"] . " already exists. ";
    ?>
          <script type="text/javascript">
          alert('File with this name already exists!');
          </script>
    <?php

      }
      else
      {
        if(move_uploaded_file($_FILES['file']['tmp_name'],$upload_path . $filename))
        {
            ?>
          <script type="text/javascript">
            alert('Successful upload!');
          </script>
    <?php   
    }
//getting variables, insert into statement -> record added to table, this part is fine
    }
    ?>
$allowed_filetypes=array(“.jpg”、“.gif”、“.bmp”、“.png”、“.tif”、“.doc”、“.docx”、“.xls”、“.xlsx”、“.pdf”、“.psd”);
$filename=$_文件['file']['name'];
$max_filesize=524288//0.5MB
$ext=substr($filename,strpos($filename,“.”),strlen($filename)-1);
//$upload_path=“C:/wamp/www/upload/”;/”/文件/';
$upload_path=“upload/”;
如果(!in_数组($ext,$allowed_文件类型))
{
die('不允许您尝试上载的文件,或者您尚未选择任何文件!');
}
if(文件大小($\u FILES['file']['tmp\u name'])>$max\u文件大小)
{
die('您尝试上载的文件太大');
}
如果(!是可写的($upload\u path))
{
die(“无效或不可写文件夹”);
}
如果(文件存在($upload_path.$\u文件[“文件”][“名称”]))
{
//echo$\u文件[“文件”][“名称”]。“已存在。”;
?>
警报('具有此名称的文件已存在!');
警报('成功上载!');

当PHP上传时,它会上传到tmp目录(通常由PHP.ini设置),然后使用move\u upload\u文件(http://php.net/manual/en/function.move-uploaded-file.php)重命名文件并将其移动到所需位置


您是否错过了此步骤?从您问题中的信息很难判断。

也可能是文件夹上的权限未设置,因此无法创建文件。这是通过以下两种方法之一完成的

1) 如果您具有root访问权限,则可以使用chown命令让运行web服务器的用户拥有该目录

chown username dirpath
2) 如果您没有根访问权限,则必须使目录世界可写

chmod 777 dirpath
请尝试此代码

$uploads_dir = $_SERVER['DOCUMENT_ROOT'] . '/uploads';

if(is_dir($upload_dir) && is_writable($upload_dir))
{
  // put your code to handle uploaded file here
}
else
{
    echo "Sorry the upload file does not exist or I can not save the file there due to directory permissions";
}

显示您的代码。您可能没有移动上载的文件。我的行是if(move_upload_file($_FILES['file']['tmp_name'],$upload_path.$filename))->成功抱歉,我不知道您在告诉我什么。我在一家公司(000webhost.com)创建了一个域,创建了一个db和表。现在我是Stuck,正如另一位评论员指出的那样,当你上传一个文件时,它会进入一个临时目录。上传后,你可以使用move_upload_file将其放入你想要的目录中。你需要使用完整的目录路径,这样它可能看起来像使用“uploads/”的“/home/username/public_html/uploads”最后,上传目录必须可由web服务器写入。如果不可写入,则php将无法移动文件。您提到数据库记录已更新,因此您似乎有2个问题1)文件未移动,2)移动验证未发生,并且数据库仍在更新。我建议t您第一次使用的用户移动上传的文件是可写的()在uploads目录路径上,确保您可以将文件移到.Hm开头。我检查了域的文件管理器,看到了文件。但是为什么我在total commander中没有看到它们?我有rw-r--r--permsrw-r-r意味着为您读/写所有者,为您所属的组读,为每个人读。Apache很少作为您的用户运行用户,因此权限必须是rw rw rw才能在那里保存文件。因此,您需要更改权限。