问题遇到的现象和发生背景
有一个表单,用form元素提交的,表单内有input file元素,因为想要刷新页面后仍保存file的值,
于是每次用户选择图片后,都会发起一个$.ajax请求,把图片存到服务器缓存(我能想到的是存$_Session)里,然后正式提交的时候再把图片从$_Session中取出来移动到存图片的文件夹里,但是移动文件我用move_uploaded_file函数不行,用rename函数也不行,请问怎么实现文件移动
用代码块功能插入代码,请勿粘贴截图
var formData = new FormData();
var name = $("input").val();
formData.append("file", file); //file文件对象
formData.append("type", fileId);
$.ajax({
type: 'POST',
url: 'uploadCache.php',
data: formData,
processData: false, // 告诉jquery要传输data对象
contentType: false, // 告诉jquery不需要增加请求头对于contentType的设置
success: function (arg) {
console.log(arg)
},
error: function () {
alert('上传错误')
}
})
//uploadCache.php
session_start();
$type = $_POST['type'];
$_SESSION[$type] = $_FILES['file'];
//表单提交php
if($driveLisenceUrl != '' && $_SESSION['drive_lisence']){
$fileName = $user . '-' . date("Y.m.d") . md5(uniqid(microtime(true),true)) . "." . substr($_SESSION['drive_lisence']["name"], strrpos($_SESSION['drive_lisence']["name"], '.')+1);
$a = rename($_SESSION['drive_lisence']["tmp_name"],"../uploadDriveLisence/" . $fileName);
}
运行结果及报错内容
Warning: rename(C:\Windows\Temp\php230C.tmp,../uploadDriveLisence/1801010011)
我的解答思路和尝试过的方法
移动文件我用move_uploaded_file函数不行,用rename函数(报warning)也不行
我想要达到的结果
实现文件从$_Session移动到目的文件夹