先说我目前的做法
是在前台新增商品照片时可以多个上传
每个图片都会有一个 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有关)
有没有其他的方式有一样的效果,但更乾淨的做法,可以不用那么长,上传多大的图片都可以?可以用同样的方式在后端抓取?
holdtom