【问题标题】:error upon uploading image no such path or directory上传图片时出错没有这样的路径或目录
【发布时间】:2015-09-04 03:29:21
【问题描述】:

美好的一天,我一直在学习教程,并且非常努力地使这个脚本工作,我已经设法解决了很多问题,但是我遇到的一个持续的问题是:

No such file or directory in /home/xxxxxxx/public_html/regForm.php on line 93

我想要完成的是让用户在注册时将个人资料图片上传到我的实时服务器/网站,这是我的表单的一部分和下面的代码:

如果有经验的用户可以对其进行扫描并告知我哪里出错了,我将不胜感激,谢谢

HTML 表单

 <form ENCTYPE="multipart/form-data" name="registration-form" id="regForm" method="post" action="regForm.php">
 :
 :
Upload Picture: <INPUT NAME="file_up" TYPE="file">
<input type="submit"  value="Register" name="register" class="buttono" />
</form>

上传脚本

$file_upload="true";
$file_up_size=$_FILES['file_up']['size'];
echo $_FILES['file_up']['name'];

if ($_FILES['file_up']['size']>250000){
    $msg=$msg."Your uploaded file size is more than 250KB
 so please reduce the file size and then upload.<BR>";
$file_upload="false";
}

if (!($_FILES['file_up']['type'] =="image/jpeg" OR $_FILES['file_up']['type'] =="image/gif"))
{
    $msg=$msg."Your uploaded file must be of JPG or GIF. Other file types are not allowed<BR>";
$file_upload="false";
}

$file_name=$_FILES['file_up']['name'];

if($file_upload=="true"){

$ftp_server = "xxxxxx";
$ftp_conn = ftp_connect($ftp_server) or die("Could not connect to $ftp_server");
$ftp_username='xxxxxx';
$ftp_userpass='xxxxxx';
$login = ftp_login($ftp_conn, $ftp_username, $ftp_userpass);

$file = $file_name;

// upload file
if (ftp_put($ftp_conn, "public_html/img/userPics", $file, FTP_ASCII)) //here is the problem with the path I suspect
  {
  echo "Successfully uploaded $file.";
  }
else
  {
  echo "Error uploading $file.";
  }

// close connection
ftp_close($ftp_conn);   
}

【问题讨论】:

  • 是的。使用二进制方法FTP_BINARYphp.net/manual/en/function.ftp-put.php 并确保路径正确并且文件夹具有正确的写入权限。也使用错误报告。
  • 你甚至可能不得不使用完整的系统路径 /home/xxxxxxx/public_html/userPics/ 你确实忘记了一个斜线虽然在 public_html/img/userPics 这应该是 public_html/img/userPics/ 否则它将寻找一个名为 userPicsIMAGE.JPG 的文件夹而不是比userPics/IMAGE.JPG
  • 我很确定我上面的 cmets 会解决这个问题。
  • @Fred-ii- 谢谢你的评论我不明白的是我应该创建路径www.mywebsite.com/public_html/img/user_pics 还是应该使用上面脚本中使用的路径,非常愚蠢的问题,但我该怎么做知道我是否使用正确的路径?
  • 不客气。我对我的第二条评论进行了编辑。 我应该将路径设为 www.mywebsite.com/public_html/img/user_pics - 不。查看我编辑的评论。

标签: php forms


【解决方案1】:

在处理图片时,需要使用二进制格式。

FTP_BINARY 而不是 FTP_ASCII。

按照说明书:

确保路径正确。这可能因不同的服务器而异。

这里还需要一个斜杠:

public_html/img/userPics/
                        ^

否则,您的系统会将其解释为:

userPicsIMAGE.JPG 而不是预期的userPics/IMAGE.JPG

但是,您可能需要尝试使用路径本身。那样 FTP 有点棘手。

即:

  • /home/xxxxxxx/public_html/userPics/
  • img/userPics/
  • ../img/userPics/

取决于文件的执行区域。

根> ftp_file.php -img -用户图片

该文件夹还需要具有适当的写入权限。

FTP 手册中的一个例子:

<?php 
ftp_chdir($conn, '/www/site/'); 
ftp_put($conn,'file.html', 'c:/wamp/www/site/file.html', FTP_BINARY ); 
?>

另外,“真”和“假”的使用。你很可能想要检查真实性

$file_upload=true;

而不是字符串文字$file_upload="true";

同样的事情

if($file_upload=="true")

if($file_upload==true)

以及$file_upload="false"; 以检查是否有误

$file_upload=false;

阅读这方面的手册:

这是最简单的类型。布尔值表示真值。它可以是 TRUE 或 FALSE。


测试您的 FTP 连接,从 https://stackoverflow.com/a/3729769/ 拉取

try {
    $con = ftp_connect($server);
    if (false === $con) {
        throw new Exception('Unable to connect');
    }

    $loggedIn = ftp_login($con,  $username,  $password);
    if (true === $loggedIn) {
        echo 'Success!';
    } else {
        throw new Exception('Unable to log in');
    }

    print_r(ftp_nlist($con, "."));
    ftp_close($con);
} catch (Exception $e) {
    echo "Failure: " . $e->getMessage();
}

命名约定:

我还需要注意,在 LINUX 上,userPicsuserpics 不同,如果您的文件夹名称是小写字母。

与不区分大小写的 Windows 不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-10
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    • 2022-11-04
    • 2019-07-20
    • 2021-01-12
    • 2014-01-03
    相关资源
    最近更新 更多