网页拍照并上传照片

我在网上找了很久这种方式但结果却都不理想,找了很久才找到解决方法,于是打算写篇博客来说一下。

Talk is cheap. Show me the code.

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ page session="false" %>
<%@ page language="java" contentType="text/html;
charset=UTF-8"
         pageEncoding="UTF-8"%>


    spittr.Spitter
    
    
    
    


网页拍照并上传照片_第1张图片

注意

  1. 这是通过ajax来post图片到服务器上,这是http请求,不能直接本地post。
  2. 需要jquery.webcam.js和jscam_canvas_only.swf 使用的时候目录修改一下

服务端

网上的方法大都也都是这样,不过都不提要去掉"data:image/jpeg;base64,"的事情,害我找了好久。

还有一点Base64最好用org.apache.commons.codec.binary.Base64的 其他的好像有一个会出错,maven地址如下


commons-codec
commons-codec
1.11

服务端代码如下

import org.apache.commons.codec.binary.Base64;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;

@Controller
@RequestMapping("/fileupload")
public class FileUploadController {

  @RequestMapping(method=RequestMethod.GET)
  public String uploadForm() {
    return "uploadForm";
  }
}
@RequestMapping(method=RequestMethod.POST)
@ResponseBody
public String processUpload(@RequestParam("img") String img) throws IOException {
  GenerateImage(img);
  return "success";
}
public static boolean GenerateImage(String imgStr)
{   //对字节数组字符串进行Base64解码并生成图片
  if (imgStr == null) //图像数据为空
    return false;
  try
  {
    //Base64解码
    imgStr=imgStr.replaceFirst("data:image/jpeg;base64,", "");
    byte[] b = Base64.decodeBase64(imgStr);
    for(int i=0;i

你可能感兴趣的:(网页拍照并上传照片)