php - 用PHP编写二进制文件

标签 php file-io io binaryfiles

我写了一个PHP文件,可以在服务器上保存一个JPEG文件,部分代码如下:

    //create folder if folder not exist
if (!is_dir($save_path)){

    $old = umask(0);
    $flag = @mkdir($save_path,0777);
    umask($old); 

if(isset($flag)){
    $string = 'Folder Create Success!'."\n";
}else{
    $string= 'Folder Create Fail!'."\n";
}
echo $string;

}else{

   echo "Folder exist!!!!";

}


//write the content to the server
$base=$_REQUEST['image'];
$binary=base64_decode($base);
header('Content-Type: image/jpg; charset=utf-8');

if(!$file = fopen($path, 'wb')){

    echo 'Image upload Fail!'."\n";
    return;
}
else
{

    fwrite($file, $binary);
    fclose($file);

}

问题是当我运行代码时,如果文件夹不存在,它只会创建文件夹但内容无法保存在文件夹中。错误信息是:

[2012 年 7 月 5 日星期四 16:59:06] [错误] [客户端 10.95.61.220] PHP 警告:fopen(/mnt/csis/upload/newphoto/others/12346_test/12346_test_2012-07-05_others_abc.jpg):无法打开流:第 57 行/var/www/html/upload_image.php 中的权限被拒绝

但是,如果我再次运行代码,由于该文件夹是过去创建的,它可以正常工作。内容可以保存在文件夹中……

我有什么不对吗?我试图在网上找到答案,但仍然无法解决问题。

任何人都可以提供帮助,非常感谢!

最佳答案

我会尝试更改文件夹的创建以使用 recursive flag :

$flag = @mkdir($save_path . "/" . $file,0777,true);

关于php - 用PHP编写二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11341506/

相关文章:

php - 更新脚本不起作用?

php - 通过 facebook api 将封面上传到事件会引发异常

php - 使用 PHP 在产品详细信息页面上向一个产品添加多个图像

c++ - 如何使用getline从文件中读入数组

java - 如何取消延迟的 FileInputStream 文件打开

java - 如何使用 InputStream 加载 UTF-8 文本文件

php - 资源解释为文档但使用 MIME 类型 application/x-javascript 传输

c - strcmp() unsigned char 到文件中的字符串

java - 重复附加到字符串时无法添加换行符

linux - 在 GNU/Linux 中如何记录正在使用磁盘的进程或内核事件?