当我为上传的文件数据执行json_encode()时,$ _FILE ['tmp_name']的值以双反斜杠传递,我认为这就是为什么函数move_uploaded_file()不起作用的原因。是否有任何解决方案那? 这是代码示例
UI:
$scope.upload = function (file) {
Upload.upload({
url: '../classes/uploadPhoto.php',
data: {file: file, 'username': $scope.usernameFile}
}).then(function (resp) {
$scope.uploadedPhoto = resp.data;
});
};
PHP:
public function __construct(){
$fileObject = new stdClass();
if(isset($_FILES['file'])){
$fileObject -> name = $_FILES['file']['name'];
$fileObject -> type = $_FILES['file']['type'];
$fileObject -> tmp = $_FILES['file']['tmp_name'];
$fileObject -> error = $_FILES['file']['error'];
$fileObject -> size = $_FILES['file']['size'];
echo json_encode($fileObject);
}
}
最后一部分:
$target_path = 'C:/xampp/htdocs/PDP/admin/ui/img/'.$request -> imageName;
move_uploaded_file($request -> tmPath, $target_path);
除了move_uploaded_file()之外,一切正常。
答案 0 :(得分:0)
双斜杠正在逃避斜线字符。如果你只需要一个斜杠。你可以使用str_replace()。
$_file['tmp_name'] = str_replace('//', '/', $_file['tmp_name']);
$_file['tmp_name'] = str_replace('\\', '\', $_file['tmp_name']);
上传内容时,建议您在表单元素中添加enctype =“multipart / form-data”。
检查文件和文件夹权限。因为这也可能是罪魁祸首。
参考文献: