首先实现前端多图选择与实时预览,通过input[file]和FileReader读取文件并展示缩略图;接着使用FormData异步上传至PHP后端,将文件存入temp_uploads目录并返回文件名;然后通过get_temp_images.php扫描目录,页面加载时重新渲染已上传的临时图片,实现刷新回显;最后建议增加文件校验、过期清理和用户隔离机制以提升安全性与稳定性。
实现多图上传并预览,需要前端 JavaScript 实时展示用户选择的图片,后端 PHP 接收文件并临时存储,同时支持页面刷新后回显已上传的临时图片。以下是完整的实现方案。
使用 HTML 的 input[type=file] 支持多选,并通过 JavaScript 读取文件生成预览图。
HTML 部分:
JavaScript 部分(原生 JS):
const input = document.getElementById('imageUpload');
const preview = document.getElementById('previewContainer');
input.addEventListener('change', function() {
preview.innerHTML = ''; // 清空之前的预览
const files = this.files;
Array.from(files).forEach(file => {
if (!file.type.match('image.*')) return;
const reader = new FileReader();
reader.onload = function(e) {
const img = document.createElement('img');
img.src = e.target.result;
img.style.width = '100px';
img.style.height = '100px';
img.style.margin = '5px';
preview.appendChild(img);
};
reader.readAsDataURL(file);
});
});
前端通过 FormData 提交文件,PHP 将其保存到临时目录(如 temp_uploads/),并返回文件名用于后续处理。
改进的 JS:添加上传功能
// 添加上传按钮
//
function uploadImages() {
const files = input.files;
const formData = new FormData();
Array.from(files).forEach(file => {
formData.append('images[]', file);
});
fetch('upload.php', {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => {
console.log('上传成功:', data);
loadTempImages(); // 上传后刷新回显
})
.catch(error => {
console.error('上传失败:', error);
});
}
PHP 处理脚本(upload.php):
[], 'error' => []];
$files = $_FILES['images'] ?? null;
if ($files && !empty($files['name'][0])) {
$count = count($files['name']);
for ($i = 0; $i < $count; $i++) {
$tmpName = $files['tmp_name'][$i];
$originalName = $files['name'][$i];
$fileName = uniqid('img_') . '_' . time() . '.' . pathinfo($originalName, PATHINFO_EXTENSION);
$filePath = $uploadDir . $fileName;
if (in_array(mime_content_type($tmpName), ['image/jpeg', 'image/png', 'image/gif'])) {
if (move_uploaded_file($tmpName, $filePath)) {
$response['success'][] = $fileName;
} else {
$response['error'][] = $originalName;
}
} else {
$response['error'][] = $originalName . ' 不是有效图片';
}
}
}
echo json_encode($response);
用户刷新页面后,从服务器获取已上传的临时图片列表并重新生成预览。
JS 加载已上传图片:
function loadTempImages() {
fetch('get_temp_images.php')
.then(response => response.json())
.then(images => {
const preview = document.getElementById('previewContainer');
images.forEach(fileName => {
const img = document.createElement('img');
img.src = 'temp_uploads/' + fileName;
img.da
taset.filename = fileName;
img.style.width = '100px';
img.style.height = '100px';
img.style.margin = '5px';
preview.appendChild(img);
});
});
}
// 页面加载时执行
window.onload = function() {
loadTempImages();
};
get_temp_images.php 获取临时目录中的图片文件名:
注意事项与优化建议
基本上就这些。通过前端预览 + 后端临时存储 + 回显机制,可以实现流畅的多图上传体验。不复杂但容易忽略细节,比如 MIME 校验和路径安全。
# php
# javascript
# java
# html
# js
# 前端
# json
# app
# session
# 后端
# ai
相关文章:
建站主机选购指南与交易推荐:核心配置解析
建站之星如何防范黑客攻击与数据泄露?
广德云建站网站建设方案与建站流程优化指南
建站之星CMS建站配置指南:模板选择与SEO优化技巧
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
宝塔Windows建站如何避免显示默认IIS页面?
定制建站流程解析:需求评估与SEO优化功能开发指南
广州美橙建站如何快速搭建多端合一网站?
如何快速重置建站主机并恢复默认配置?
昆明网站制作哪家好,昆明公租房申请网上登录入口?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
建站之星如何优化SEO以实现高效排名?
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
如何选择建站程序?包含哪些必备功能与类型?
如何配置IIS站点权限与局域网访问?
官网建站费用明细查询_企业建站套餐价格及收费标准指南
如何快速辨别茅台真假?关键步骤解析
名字制作网站免费,所有小说网站的名字?
网站制作需要会哪些技术,建立一个网站要花费多少?
c# 服务器GC和工作站GC的区别和设置
安云自助建站系统如何快速提升SEO排名?
北京网站制作的公司有哪些,北京白云观官方网站?
长沙企业网站制作哪家好,长沙水业集团官方网站?
如何用腾讯建站主机快速创建免费网站?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
如何获取开源自助建站系统免费下载链接?
如何在橙子建站上传落地页?操作指南详解
c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】
c# F# 的 MailboxProcessor 和 C# 的 Actor 模型
Android自定义listview布局实现上拉加载下拉刷新功能
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
如何快速配置高效服务器建站软件?
魔方云NAT建站如何实现端口转发?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
Swift中循环语句中的转移语句 break 和 continue
如何通过IIS搭建网站并配置访问权限?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
建站主机无法访问?如何排查域名与服务器问题
实例解析angularjs的filter过滤器
Bpmn 2.0的XML文件怎么画流程图
SQL查询语句优化的实用方法总结
微信h5制作网站有哪些,免费微信H5页面制作工具?
网站制作公司排行榜,四大门户网站排名?
建站之星安装模板失败:服务器环境不兼容?
5种Android数据存储方式汇总
详解jQuery中基本的动画方法
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
网站制作免费,什么网站能看正片电影?
*请认真填写需求信息,我们会在24小时内与您取得联系。