wap端图片上传

本文介绍了一种通过Base64编码实现图片上传的方法,该方法利用Servlet接收前端传递的Base64编码图片,并将其转换为图片文件保存在服务器上。文章提供了完整的Java Servlet实现代码,展示了如何解析Base64编码、生成文件名及路径等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;  
        }  
    }  
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值