微信端上传base64格式的图片到服务器
首先要将标准的base64码通过post请求传入后台,为什么要使用POST呢?base64大图的码长度可以自己看看
先看代码
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
public FileItem base64ToImage(String imgStr) { // 对字节数组字符串进行Base64解码并生成图片try {// Base64解码byte[] b = Base64.decodeBase64(imgStr);for (int i = 0; i < b.length; ++i) {// 调整异常数据if (b[i] < 0) {b[i] += 256;}}InputStream inputStream = new ByteArrayInputStream(b);File tmpFile = FileUtils.createTmpFile(inputStream, UUID.randomUUID().toString(), ".jpg");return createFileItem(tmpFile, tmpFile.getName());} catch (Exception e) {log.error("文件上传失败{}", e);return null;}}/** 创建FileItem*/private FileItem createFileItem(File file, String fieldName) {FileItemFactory factory = new DiskFileItemFactory(16, null);FileItem item = factory.createItem(fieldName, "text/plain", true, file.getName());int bytesRead = 0;byte[] buffer = new byte[8192];try {FileInputStream fis = new FileInputStream(file);OutputStream os = item.getOutputStream();while ((bytesRead = fis.read(buffer, 0, 8192)) != -1) {os.write(buffer, 0, bytesRead);}os.close();fis.close();} catch (IOException e) {e.printStackTrace();}return item;}
当然这个并没有写入本地,这个是为了将文件转为流,再通过表单提交方式提交到图片服务器。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
