【问题标题】:move_uploaded_file(...): failed to open stream: No such file or directorymove_uploaded_file(...): 无法打开流: 没有这样的文件或目录
【发布时间】:2016-04-05 03:01:02
【问题描述】:

我尝试使用 PHP 和 MySQL 将图像插入到我的数据库中,并带有一个临时文件夹。

我使用 laravel,这是我的控制器:

if(isset($_FILES['img_masc']))
{
    $img=$_FILES['img_masc']['name'];
    $ruta= $_FILES['img_masc']['tmp_name'];
}

$destino='../../../Perf_Masc/'.$img;
$masc->img=$destino;
//copy($ruta, $destino);
move_uploaded_file($ruta, $destino); //line 49

这是我的看法:

<form method="POST" action="/RegMasc" enctype= "multipart/form-data" >
    <div>
        <input required name="img_masc" type="file"/>
    </div>

这是我的错误:

第 49 行中的错误异常: move_uploaded_file(../../../Perf_Masc/AF5.jpg):打开流失败:没有这样的文件或目录

我尝试了很多东西,也尝试了复制功能,但无论如何都无法正常工作

【问题讨论】:

  • 尝试添加完整路径然后检查
  • 你在正确的目的地有像 Perf_Masc 这样的文件夹吗?
  • 试试 $destino= $img;并查看文件是否保存在您拥有 php 文件的同一位置
  • 尝试调试。使用file_exists('../../../Perf_Masc/'); 检查目录是否真的存在
  • 经常会遇到这个错误,要快速解决它,请按照以下步骤操作:stackoverflow.com/a/36577021/2873507

标签: php mysql


【解决方案1】:

在您的配置文件或一些通用文件中定义您的路径如下

define('DOCROOT', $_SERVER['DOCUMENT_ROOT'].'&lt;YOUR PROJECT DIRECTORY&gt;/');

在你的所有类文件中包含这个通用的 php。

然后

 $destino= DOCROOT.'Perf_Masc/'.$img; // HERE DOCROOT is defined in config.

【讨论】:

  • 我把define('DOCROOT', 'D:/wamp/www/total/');在我使用图像的功能的顶部是正确的吗?因为这种方式行不通 D:现在向我抛出这个错误:move_uploaded_file(C:/wamp/www/total/Perf_Masc/AF5.jpg): failed to open stream: No such file or directory
  • @Valeria total 是我的项目名称。您替换您的项目目录名称
  • 哦,我明白了,但如果我所有的项目都在'C:/wamp/www/'中,我怎么写? S:对不起,我还在学习。 D:
  • C:/wamp/www//
  • @Valeria 参考我更新的答案。这样你在迁移服务器时不需要修改你的编码
【解决方案2】:

将正斜杠更改为反斜杠。

先定义这些

//Define back slash so that you can use it anywhere later
defined("DS") ? null : define("DS", DIRECTORY_SEPARATOR);
// Define your website siteroot
defined("SITE_ROOT") ? null : define("SITE_ROOT", "C:".DS."wamp".DS."www".DS."your_website");

现在移动你的文件

$file_name=$_FILES['file']['name'];
$file_tmp=$_FILES['file']['tmp_name'];
$file_upload_to=SITE_ROOT . DS . "Perf_Masc";

move_uploaded_files($file_tmp, $file_upload_to . DS . $file_name);

如果您很难定义网站的根目录,您可以在根目录中创建一个 php 文件,然后为 PHP 5.3 或更高版本创建echo __DIR__,对于早期版本,使用echo dirname(__FILE__)

【讨论】:

猜你喜欢
  • 2013-01-13
  • 2020-10-18
  • 2017-05-04
  • 1970-01-01
  • 2015-07-29
  • 2015-11-13
相关资源
最近更新 更多