使用Java和PHP上传文件 - 未定义的索引错误

时间:2015-07-24 18:01:43

标签: php

我正在尝试在Intranet上从客户端上传文件到服务器端。

我正在

  

未定义的索引:file_data

file_handler.php中的

与:

有关
$fd = $_POST['file_data'];

非常感谢您对此的意见!提前谢谢。

我的 Uploader.php 文件如下:

<!DOCTYPE html>
<html >
  <head>
    <title>Upload file</title>
  </head>
  <body>
    <script>
        var http = new XMLHttpRequest();
        var url = "file_handler.php";
        var file_data = "name=s:\a.pdf&size=123&other=etc";
        http.open("POST", url, true);

        // headers
        http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        http.setRequestHeader("Content-length", file_data.length);
        http.setRequestHeader("Connection", "close");

        http.onreadystatechange = function() {
            if(http.readyState == 4 && http.status == 200) {
                alert(http.responseText);
            }
        }
        http.send(file_data);
    </script>
  </body>
</html>

我的file_handler.php页面是:

    <?php
    ini_set('display_errors',1);
    ini_set('display_startup_errors',1);
    error_reporting(-1);
    date_default_timezone_set('Etc/UTC');

    // file data
    $fd = $_POST['file_data'];

    // working on the file
    $temp_dir = 'sub3/';
    $new_dir = 'sub5/';

    // new unique name
    $new_name = time() . '_' . $fd['name'];

    // copy?
    if (@move_uploaded_file($temp_dir . $fd['name'], $new_dir . $new_name)) {
        unlink($temp_dir . $fd['name']);
    }
?>

1 个答案:

答案 0 :(得分:1)

file_data不是$_POST数据。您请求的$_POST数据为namesize&amp; other。试试这个。

if(isset($_POST['name'])){
    // working on the file
    $temp_dir = 'sub3/';
    $new_dir = 'sub5/';
    // new unique name
    $new_name = time() . '_' . $_POST['name'];

    // copy?
    if (@move_uploaded_file($temp_dir . $_POST['name'], $new_dir . $new_name)) {
        unlink($temp_dir . $_POST['name']);
    }
}