博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java后台获取Html5拍照的照片并下载的实例方法
阅读量:7199 次
发布时间:2019-06-29

本文共 3878 字,大约阅读时间需要 12 分钟。

  

Html5目前渐渐的应用越来越广泛。它已经成为技术的一种主流。在国内的一些云平台,一些新的拍照技术上,也都运用了html5.我的这个实例是我们公司在云平台上用到的html5拍照并下载。

    这里前台html5怎么捕捉传数据的就不提了。后台接收,其实也比较简单,通过获取到前台传递的payload的形式的数据,看下面代码:

View Code
1 String cameraPhoto=String.valueOf(request.getParameter("data"));    //获取前台页面传过来的Base64加密的数据2                 String    saveFileNames=String.valueOf(request.getParameter("filename"));    //获取前台页面图片的名称3                 cameraPhoto=fileCommon.DelFormat(cameraPhoto);    //消除换行和空格4                 SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-ddhh:mm:ss"); //格式化当前系统5                 dateTime = dateFm.format(new java.util.Date()); //当前时间6                 picName=dateTime+saveFileNames;                          //现在图片的名称7                 urls = pros.getProperty("uploadUrl_uri")+ "savefile"+ File.separator+picName;    //最新的路径名称8                 long result=fileCommon.GenerateImage(cameraPhoto, urls);    //把数据转换成为图片

 

                  其实后台处理很简单,html5捕捉的图片,只是一组经过Base64加密过的数据,主要是看你怎么接收,接收时根据http协议的里面http正文的关键字(用谷歌浏览器控制台可以查看到),接收以后,解密,然后再把数据转换为图片就ok了。

具体转换过程,看下面代码:

 

View Code
1 public class FileCommon { 2      3     /*******************将图片转化为字符串***********************************/ 4     public static String GetImageStr(String imgFilePath) { 5           // 将图片文件转化为字节数组字符串,并对其进行Base64编码处理 6           byte[] data = null; 7           // 读取图片字节数组 8           try { 9            InputStream in = new FileInputStream(imgFilePath);10            data = new byte[in.available()];11            in.read(data);12            in.close();13           } catch (IOException e) {14            e.printStackTrace();15           }16           // 对字节数组Base64编码17           BASE64Encoder encoder = new BASE64Encoder();18           return encoder.encode(data);// 返回Base64编码过的字节数组字符串19          }20         /***********************将字符串转化为图片***********************************************/21          public static long GenerateImage(String imgStr, String imgFilePath) {
// 对字节数组字符串进行Base64解码并生成图片22 if (imgStr == null)23 // 图像数据为空24 return 0;25 BASE64Decoder decoder = new BASE64Decoder();26 try {27 // Base64解码28 byte[] bytes = decoder.decodeBuffer(imgStr);29 for (int i = 0; i < bytes.length; ++i) {30 if (bytes[i] < 0) {
// 调整异常数据31 bytes[i] += 256;32 }33 }34 // 生成jpeg图片35 OutputStream out = new FileOutputStream(imgFilePath);36 out.write(bytes);37 out.flush();38 out.close();39 return bytes.length;40 } catch (Exception e) {41 return 0;42 }43 }44 45 /********************字符串格式化,取消空格和换行******************************/46 public static String DelFormat(String param){47 Pattern p = Pattern.compile("\\s*|\t|\r|\n"); 48 Matcher ms = p.matcher(param); 49 param = ms.replaceAll("");50 String temps = "";51 // 把可能存在的换行剔除52 StringReader srs = new StringReader(param);53 BufferedReader brs = new BufferedReader(srs);54 String lines = null;55 try {56 while ((lines = brs.readLine()) != null) {57 temps += lines;58 }59 } catch (IOException e1) {60 // TODO Auto-generated catch block61 e1.printStackTrace();62 }63 temps=temps.replace("\r\n", "\\r\\n");64 //去除换行和空格65 return temps;66 }67 /**68 * 获取当前时间的字符串69 * @return “yyyyMMddHHmmss”70 */71 public static String getTimeNow() {72 Date date = new Date();73 DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");74 String str = dateFormat.format(date);75 return str;76 } 77 78 }

 

  

经过以上处理,就可以成功的把照片存放到你要存放的位置了。

转载于:https://www.cnblogs.com/shunxiyuan/archive/2012/12/05/2803378.html

你可能感兴趣的文章
centos6 Docker桥接到主机所在的内网
查看>>
C++ 动态内存
查看>>
网络安装CentOS5.5Final
查看>>
View requires API level 14 (current min is 8)
查看>>
Anychat即时通讯系统
查看>>
2011年 小结
查看>>
手机网站的网页进行微信转发时遇到的问题
查看>>
在RHEL6上配置基于ftp的YUM
查看>>
【行为型】- 状态模式
查看>>
AIX5.3 hacmp配置
查看>>
Linux关闭休眠和屏保模式
查看>>
我的友情链接
查看>>
Docker images
查看>>
OpenJudge 4146:数字方格 java穷举法
查看>>
搭建linuxFTP的步骤
查看>>
跟我一起学docker(八)--Dockerfile
查看>>
做SEO,选择大于努力
查看>>
python web开发-flask调试模式
查看>>
3分钟看懂linux磁盘划分
查看>>
Linux-LAMP 默认页,虚拟主机
查看>>