php + js 多个商品照片的上传处理?
先说我目前的做法
是在前台新增商品照片时可以多个上传
每个图片都会有一个 hidden input,里面放的是 base64
<input type="hidden" name="icon[]" value="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAacAAAJ7CAYAAABH+15RAAAKsGlDQ1BJQ0MgUHJvZmlsZQAASImVlgdUU1kexu976Y0...">
然后在后端 php 用 file_put_contents 将其下载到指定目录
foreach ($_POST['icon'] as $value) {
preg_match('/^(data:\s*image\/(\w+);base64,)/', $value, $result);
$typeThis = '.' . $result[2];
file_put_contents('../../images/product/cover-XXX'.$typeThis, base64_decode(str_replace($result[1], '', $value)));
只是这个字串长度真的让人呵呵
然后如果上传十几MB的图片,就直接不给过(应该是base64字串太长的关系,好像跟SIZE有关)
有没有其他的方式有一样的效果,但更乾淨的做法,可以不用那么长,上传多大的图片都可以?可以用同样的方式在后端抓取?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
首先谢邀,
对后端不够熟悉,我给一些偏前端的点吧:
从前端上传图片到后端,然后php进行处理,完全不需要传base64的字符串,base64可以在上传到后端前,给用户预览,减少不必要的上传,等用户真正确认后,才开始上传到服务器。
这是目前我自己博客后台用的一个简单的图片上传功能,可以供你参考一下:
前端,我这里用到了jQuery
后端使用
$_FILES
获取到相关的图片列表