使用PHP将文件移动到目录

时间:2013-03-13 19:15:12

标签: java php file-upload

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

<?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);
?>

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

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

此外,数据库IS正在提取正确的文件大小和文件名,因此正在向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);            
} 

2 个答案:

答案 0 :(得分:1)

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

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

如果您启用了PHP错误日志记录,则还应在日志中看到有关此内容的注释。

祝你好运。

答案 1 :(得分:0)

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