wap端图片上传方法,可重复使用。和平常的servlet一样,只需在web.xml中配置即可
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import sun.misc.BASE64Decoder;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.fasterxml.jackson.databind.ObjectMapper;
public class UploaderImageServlet extends HttpServlet{
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
Map<String, Object> json = new HashMap<>();
try {
String base64 = req.getParameter("base64");
GenerateImage(base64);
json.put("result", true);
json.put("relativePath", "");
} catch (Exception e) {
json.put("result", false);
}
resp.setContentType("text/json; charset=utf-8");
PrintWriter writer = resp.getWriter();
ObjectMapper mapper = new ObjectMapper();
String jsonStr = mapper.writeValueAsString(json);
writer.write(jsonStr);
writer.flush();
}
//base64字符串转化成图片
private boolean GenerateImage(String imgStr)
{ //对字节数组字符串进行Base64解码并生成图片
imgStr = imgStr.replaceFirst("data:image/png;base64,", "");
imgStr = imgStr.replaceFirst("data:image/gif;base64,", "");
imgStr = imgStr.replaceFirst("data:image/jpeg;base64,", "");
if (imgStr == null) //图像数据为空
return false;
BASE64Decoder decoder = new BASE64Decoder();
try
{
//Base64解码
byte[] b = decoder.decodeBuffer(imgStr);
for(int i=0;i<b.length;++i)
{
if(b[i]<0)
{//调整异常数据
b[i]+=256;
}
}
//生成jpeg图片
java.sql.Timestamp time = new java.sql.Timestamp(new java.util.Date().getTime());
String fileName = time.getTime()+"";
String imgFilePath = "E:\\img\\"+fileName+".jpg";//新生成的图片
OutputStream out = new FileOutputStream(imgFilePath);
out.write(b);
out.flush();
out.close();
return true;
}
catch (Exception e)
{
return false;
}
}
}