我想在我的网页上创建拖放上传。我编写的代码使用Jquery打开文件,并使用XHR请求将数据发送到php文件。然后php文件将文件移动到我的perfered位置。当我将我的文件拖放到放置区域时,我收到了200个帖子请求,我认为这意味着数据被发送到我的PHP脚本但是后来我收到了以下错误:
file_put_contents(../../../media/SeagateHDD/Uploads/): failed to open stream
我相信这个错误是因为php无法找到位置(../../../ media / SeagateHDD / Uploads /)但是我检查了十次并且位置正确且没有拼写错误。我也检查了我的许可和所有者的位置,一切都是正确的所有者“www-data:www-data”和权限“0775”甚至tred“0777”,没有任何作用。如果有人能帮助我解决这些问题,我将非常感激。
我的Javascript
$(函数(){
var obj = $('#Upload_form');
obj.on('dragover', function(e){
//prevent browser from open the file when drop off
e.stopPropagation();
e.preventDefault();
$(this).css('border',"3px solid #000000");
});
obj.on('dragleave', function(e){
//prevent browser from open the file when drop off
e.stopPropagation();
e.preventDefault();
$(this).css('border',"3px dashed #4a4a4a");
});
obj.on('drop',function(e){
//prevent browser from open the file when drop off
e.stopPropagation();
e.preventDefault();
$(this).css('border',"3px dashed #4a4a4a");
//retrieve uploaded files data
var files = e.originalEvent.dataTransfer.files;
var file = files[0];
upload(file);
});
function upload(file){
xhr = new XMLHttpRequest();
//initiate Request
xhr.open('POST','../PHP/Drop_Upload.php', true);
//set headers
xhr.setRequestHeader('Content-Type', 'multipart/form-data');
xhr.setRequestHeader('X-File-Name',file.fileName);
xhr.setRequestHeader('X-File-Size',file.fileSize);
xhr.setRequestHeader('X-File-Type',file.fileType);
//send the file
xhr.send(file);
}
});
我的PHP
$string = file_get_contents('php://input');
$path = '../../../media/SeagateHDD/Uploads/';
if ( !file_exists($path) ) {
mkdir ($path, 0777);
}
if (file_put_contents($path,$string)==true){
echo 'File Uploaded Successfully';
}else{
echo 'File Failed to Upload';
}
答案 0 :(得分:1)
在$ path中,您提供目录路径。它应该提供文件路径。比如$ path =' ../../../ media / SeagateHDD / Uploads / something.txt';
答案 1 :(得分:0)
您可以通过这种方式将相对路径转换为绝对路径:
$path = realpath('../../../media/SeagateHDD/Uploads/');
之后,您必须将文件名附加到要写入的位置,例如:
$path .= "text.txt";