1

我正在尝试制作拖放上传器。我已经制作了拖放部分,但现在我必须制作 PHP 并且我被卡住了,不知道该怎么做。我的问题是,我不能使用 move_uploaded_file(); 因为没有

<input type="file">

已提交。有没有办法解决这个问题,我应该使用/做什么?

我不是在要求一个完整的代码示例,而只是对我接下来要做的事情的一个线索。

4

2 回答 2

1

查看此实现以获得一个想法:

/**
 * Save the file to the specified path
 * @return boolean TRUE on success
 */
function save($path) {    
    $input = fopen("php://input", "r");
    $temp = tmpfile();
    $realSize = stream_copy_to_stream($input, $temp);
    fclose($input);

    if ($realSize != $this->getSize()){            
        return false;
    }

    $target = fopen($path, "w");        
    fseek($temp, 0, SEEK_SET);
    stream_copy_to_stream($temp, $target);
    fclose($target);

    return true;
}

我在我的一个项目中使用了这样的实现:

$savePath = '/home/user/uploaded_files/picture.png';

if(!isset($_FILES['qqfile']['tmp_name'])) {
    $input = fopen('php://input', 'r');
    $temp = tmpfile();
    stream_copy_to_stream($input, $temp);
    fclose($input);
    $target = fopen($savePath, 'w');
    fseek($temp, 0, SEEK_SET);
    stream_copy_to_stream($temp, $target);
    fclose($target);
} else {
    move_uploaded_file($_FILES['qqfile']['tmp_name'], $savePath);
}
于 2012-09-24T18:33:24.843 回答
-2

使用 PHP,您很可能必须实际提交一个表单,即使它是通过框架中的 javscript 完成的,这样它实际上不会移动您所在的页面。

一旦你提交了一个你可以使用的真实表单move_uploaded_file(),只是不要忘记标签enctype="multipart/form-data"中的属性!form

于 2012-09-24T18:33:46.730 回答