使用jQuery移动上载的文件时出错&;PHp
这是“post.php”使用jQuery移动上载的文件时出错&;PHp,php,jquery,Php,Jquery,这是“post.php” 一切正常,我得到了照片的文件名,但我无法使用move_uploaded_file()将其移动到另一个文件夹中;函数。您需要使用临时文件名($\u FILES['userfile']['tmp\u name']) move\u uploaded\u file函数仅适用于PHP知道是通过它上载的文件。但是如何获取临时文件名?我不想使用表单等。我只有文件名和路径?PHP在$\u FILESglobal中为您提供了有关上载文件的所有信息。如果您没有在这个脚本中实际上传文件
一切正常,我得到了照片的文件名,但我无法使用move_uploaded_file()将其移动到另一个文件夹中;函数。您需要使用临时文件名(
$\u FILES['userfile']['tmp\u name']
)
move\u uploaded\u file
函数仅适用于PHP知道是通过它上载的文件。但是如何获取临时文件名?我不想使用表单等。我只有文件名和路径?PHP在$\u FILES
global中为您提供了有关上载文件的所有信息。如果您没有在这个脚本中实际上传文件(再次查看,我在您的JavaScript中没有看到),那么move\u uploaded\u file
是一个错误的函数。如果是这样的话,我确实有一个严重的安全问题(正如其他人所提到的)。我不想使用“表单”如何使用javscript上传?这是一个完全不同的问题,而且不是一个好问题。请明确描述您想要实现的目标。您需要一个表单来上传文件,或者您需要从AJAX POST开始,而不是GET并手动将文件加载到JavaScript中。你最好使用一个库,但大多数库只是使用JavaScript创建和提交一个
;攻击者可以在您的服务器磁盘中写入任何文件。我知道这只是为了测试man:)服务器需要的文件超过了文件输入的值。如果不打算使用表单,唯一的选择是使用window.FormData
,这在所有浏览器中都不受支持。建议的解决方案是只使用表单,它是跨浏览器的,易于实现,并且不需要刷新页面。我如何才能做到这一点?没有提神?
$(document).ready(function(){
var status;
var photo_url;
var ext;
$("#photo_file").change(function() {
photo_url = this.value.split("\\").pop();
ext = photo_url.split('.').pop().toLowerCase();
if ( (ext == "jpg" ) || ( ext == "jpeg") || (ext == "png") ) {
$.get('ajax/post.php', {photo_url: photo_url});
} else {
alert("incorrect file type, allowed: jpg, jpeg, png.");
}
});
<?php
$photo_url = $_GET['photo_url'];
$file_path = 'uploaded_photos/' . $photo_url;
$photo_url = 'img/' . $photo_url;
move_uploaded_file($photo_url, $file_path);
?>