【问题标题】:Moving File to Directory with PHP使用 PHP 将文件移动到目录
【发布时间】:2013-03-01 22:15:18
【问题描述】:

我有这个简短的基本代码:

<?php
    $username = $_POST['User'];
    $file = $_FILES['File'];
    $size = $_FILES['File']['size'];
    $name = $_FILES['File']['name'];
    $temp_name = $file['tmp_name'];
    $user_id = Data::getUserId($username);
    $target_path = "/---/---/profile_pics/" . $name;

    $sql = "INSERT INTO profile_photos (name, size, user_id) 
               VALUES ('{$name}', '{$size}', '{$user_id}');";
    mysqli_query($dbconnection, $sql);

    move_uploaded_file($temp_name, $target_path);
?>

注意,这是测试代码,所以我可能没有遵循最佳实践。

我在我的 MySQL 数据库中获得了正确的文件信息。但我没有得到在目录中移动的实际文件。

此外,数据库正在提取正确的文件大小和文件名,因此传递给 PHP 的内容肯定是准确的。


我从 Java 传递文件。 这是关于这一端的补充信息(以防有人知道这一端;但我认为问题不在这里:

HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url_select);
File file = new File(imagePath);
HttpResponse response = null;
MultipartEntity entity = new MultipartEntity();
ContentBody cbFile = new FileBody(file, "image/jpeg");
StringBody sb;  

try {
    sb = new StringBody(userName);
    entity.addPart("User", sb);
    entity.addPart("File", cbFile);
    post.setEntity(entity);
    response = client.execute(post);            
} 

【问题讨论】:

  • 您确定生成的路径正确吗?你对你的服务器有写权限吗?
  • 你是对的。我在路径上的常量变量有问题。我使用godaddy,他们的绝对路径是真的很长。

标签: java php file-upload


【解决方案1】:

PHP 可能没有写入目标目录的权限。这可以解释为什么 PHP 有关于文件的信息,但不能将它移动到那个位置。

您可以尝试将一些简单的内容写入同一位置的文件(fopen、fwrite 等),以验证权限设置是否正确。

如果您打开了 PHP 错误日志记录,您还应该在日志中看到关于此的注释。

祝你好运。

【讨论】:

    【解决方案2】:

    它会仔细检查您的路径小子。这就是我的问题的答案。否则代码是正确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-14
      • 2013-02-03
      • 2015-09-25
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多