在Angular中,将图片上传到PHP服务器时,可能会遇到tmp_name丢失的问题。这通常是由于未正确处理文件上传导致的。下面是一个解决该问题的代码示例:
Angular代码示例:
// 获取文件上传的input元素
const fileInput = document.getElementById('fileInput') as HTMLInputElement;
// 为文件上传的input元素添加change事件监听器
fileInput.addEventListener('change', (event) => {
// 获取选中的文件
const file = event.target.files[0];
// 创建FormData对象
const formData = new FormData();
// 将选中的文件添加到FormData对象中
formData.append('file', file, file.name);
// 发送文件上传请求
fetch('upload.php', {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => {
console.log(data);
})
.catch(error => {
console.error(error);
});
});
PHP代码示例(upload.php):
true,
'message' => '文件上传成功'
);
} else {
// 返回上传失败的信息
$response = array(
'success' => false,
'message' => '文件上传失败'
);
}
// 将响应结果以JSON格式返回给前端
header('Content-Type: application/json');
echo json_encode($response);
?>
请确保在运行代码之前,已经创建了一个名为"uploads"的目录,用于存储上传的文件。
以上代码示例中,我们使用了FormData对象来构建文件上传请求,并通过fetch函数发送请求到PHP服务器。在PHP代码中,我们首先通过$_FILES['file']['tmp_name']获取临时文件名,然后使用move_uploaded_file函数将临时文件移动到目标位置。
请注意,根据你的具体需求,你可能需要对上传的文件进行安全性检查和限制。这里只提供了一个基本的示例来说明如何处理临时文件丢失的问题。