论坛首页 入门技术论坛

http 使用BASE64发送图片

浏览 3118 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2013-03-05   最后修改:2013-03-05

服务器端 方法内代码

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

		
	}

 

 

   发表时间:2013-04-17  
页面通过jsbase64编码后,服务端java获取base64编码字符串需要将" "替换成+,图片才可以正常显示
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics