Javascript 拖放;滴装机

Javascript 拖放;滴装机,javascript,Javascript,我想做一个拖放上传器。我做了拖放部分, 但是现在我不得不做PHP,我被卡住了,不知道该怎么做。 我的问题是,我不能使用move_uploaded_file();因为没有 <input type="file"> 已提交。 有没有办法解决这个问题?我应该使用/做什么 我不是要一个完整的代码示例,只是想知道我下一步要做什么。仔细研究一下,得出一个想法: /** * Save the file to the specified path * @return boolean TRUE

我想做一个拖放上传器。我做了拖放部分, 但是现在我不得不做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\u uploaded\u file()
,但不要忘记
form
标记中的
enctype=“multipart/form data”
属性

甚至有可能做到这一点吗?我读了很多帖子,说这不会发生,因为文件是临时保存在服务器上的。但我想过用php创建文件,然后欺骗它来上传文件?这取决于上传文件的方法。例如,您可以看到带有附加标题的GET请求
Content-Type:application/octet-stream
X-File-Name:family.jpg
X-Mime-Type:image/jpeg
X-Requested-with:XMLHttpRequest
。如果你使用的是同样的技术,那么是的。作为替代方案,您可以使用hidden上传文件,然后在服务器上以常规方式处理它们。我已经查看了您的编辑。我从哪里获得tempFilePath?没有临时文件?
$tmpFilePath
是要保存上载文件的文件路径。我会编辑使它更清楚。哈哈。。这确实有效。我会做一些改变,但这是一个很好的开始。非常感谢Evgeny!对于真正好的实现,您可以参考。它可以用于任何服务器(PHP、Rails、Node.js…),绝对值得一看。@Thomasklem我以前看过这个。但我只是觉得如果我使用另一个插件,它就不是我的页面,如果你知道我的意思的话。我的整个页面是一个图像上传程序。也许我只是奇怪;o) 我完全理解:为了学习起见,从头开始构建东西来感受那些顶级实现是如何工作的是件很棒的事情。一旦你在一个项目中,文件上传只是需要工作,而不是你提供的实际价值主张,那么有很多维护良好的插件可以帮助你把工作做好