我正在尝试制作拖放上传器。我已经制作了拖放部分,但现在我必须制作 PHP 并且我被卡住了,不知道该怎么做。我的问题是,我不能使用 move_uploaded_file(); 因为没有
<input type="file">
已提交。有没有办法解决这个问题,我应该使用/做什么?
我不是在要求一个完整的代码示例,而只是对我接下来要做的事情的一个线索。
我正在尝试制作拖放上传器。我已经制作了拖放部分,但现在我必须制作 PHP 并且我被卡住了,不知道该怎么做。我的问题是,我不能使用 move_uploaded_file(); 因为没有
<input type="file">
已提交。有没有办法解决这个问题,我应该使用/做什么?
我不是在要求一个完整的代码示例,而只是对我接下来要做的事情的一个线索。
查看此实现以获得一个想法:
/**
* 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);
}
使用 PHP,您很可能必须实际提交一个表单,即使它是通过框架中的 javscript 完成的,这样它实际上不会移动您所在的页面。
一旦你提交了一个你就可以使用的真实表单move_uploaded_file()
,只是不要忘记标签enctype="multipart/form-data"
中的属性!form