【问题标题】:Using fopen() to write file into subdirectory使用 fopen() 将文件写入子目录
【发布时间】:2012-12-07 10:05:01
【问题描述】:

我已经查看了this StackOverflow 问题,但没有帮助(类似标题)。

我正在从我的 Android 应用程序中传递一个图像。如果我输入

$file = fopen('test.jpg', 'wb');

它工作正常并且图像上传;但是,我想允许从 android 手机多次上传,所以我想随机化 .jpg 文件的名称,以便我可以将每个新上传保存为不同的名称。我在下面尝试这个:

$destination =  time() + rand(1, 1000) . ".jpg";
$url_destination = "/project_images/" . $destination;

$file = fopen($url_destination, 'wb');
fwrite($file, $binary);
fclose($file);

但是,它不会将文件写入服务器。我在那里尝试了 URL 的不同变体 - 使用“project_images/”、“/project_images/”,甚至尝试了完整的 URL(前面提到的 StackOverflow 帖子纠正了我),但我仍然无法编写它。

project_images 文件夹的权限设置为允许将文件写入其中。有什么想法吗?

【问题讨论】:

  • fopen 无法写入 URL,因此 $url_destination 肯定是走错了路。路径必须是本地文件系统路径。
  • 尝试将 /project_images 目录的权限更改为 777
  • @ÁlvaroG.Vicario OP 已经在他的问题中表示该问题不能解决他的问题。
  • @JaredMcAteer - OP 后来承认“他没有正确上传”。

标签: php directory fopen


【解决方案1】:

您的问题是"/project_images",这是一个错误的绝对路径。

为了让它工作,请将其更改为 "project_images/"dirname(__FILE__).'/project_images/'

【讨论】:

  • 我以为我已经尝试过了(请参阅我的帖子,其中我实际上包含了那个!),但我猜它没有正确上传。这解决了它。
  • Great :) .. 通常使用 dirname(FILE) 在这些情况下是最好的解决方案
  • 您的代码的另一个改进.. 如果您不使用这样的代码,请尝试坚持使用 ' 而不是 ":$str = "content of test is $test";
【解决方案2】:

对于在 Windows 上使用 XAMPP 的用户:使用 DIRECTORY_SEPARATOR 而不是 /

dirname(__FILE__).DIRECTORY_SEPARATOR.'project_images'.DIRECTORY_SEPARATOR

【讨论】:

    猜你喜欢
    • 2012-04-07
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多