服务器端 方法内代码
String fileName = request.getParameter("fileName"); String str = request.getParameter("file"); log.info(fileName+"------------"); log.info(str+"-=================="); BASE64Decoder decoder = new BASE64Decoder(); try { // Base64解码 byte[] bytes = decoder.decodeBuffer(str); for (int i = 0; i < bytes.length; ++i) { if (bytes[i] < 0) {// 调整异常数据 bytes[i] += 256; } } // 生成图片 OutputStream outs = new FileOutputStream(filepath+fileName); outs.write(bytes); outs.flush(); outs.close(); return null; } catch (Exception e) { logger.error("", e); }
客户调用端
public static String getPicBASE64() { String picPath = "/var/xxxx.png"; String content = ""; try { FileInputStream fileForInput = new FileInputStream(picPath); byte[] bytes = new byte[fileForInput.available()]; if(bytes.length<102400){ System.out.print(bytes.length); } fileForInput.read(bytes); content = new sun.misc.BASE64Encoder().encode(bytes); // 具体的编码方法 fileForInput.close(); } catch (Exception e) { e.printStackTrace(); } return content; } public static void main(String[] args) throws Exception { URL url = new URL("http://**********:80/newdemo/app/imageUpload.do"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoOutput(true); connection.setDoInput(true); // Post 请求不能使用缓存 connection.setUseCaches(false); // URLConnection.setFollowRedirects是static函数,作用于所有的URLConnection对象。 // connection.setFollowRedirects(true); // URLConnection.setInstanceFollowRedirects是成员函数,仅作用于当前函数 connection.setInstanceFollowRedirects(false); // 配置本次连接的Content-type,配置为application/x-www-form-urlencoded的 // 正文是urlencoded编码过的form参数,下面我们可以看到我们对正文内容使用URLEncoder.encode // 进行编码 connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); // 连接,从postUrl.openConnection()至此的配置必须要在connect之前完成, // 要注意的是connection.getOutputStream会隐含的进行connect。 connection.connect(); Long sendTime = System.currentTimeMillis(); DataOutputStream out = new DataOutputStream( connection.getOutputStream()); // 要传的参数 String content ="fileName=ssh2.jpg"; // 得到图片的base64编码 content = content + "&" + URLEncoder.encode("file", "UTF-8") + "="+ URLEncoder.encode(getPicBASE64(), "UTF-8"); out.writeBytes(content); out.flush(); out.close(); } }