1 js獲取canvas base64(所需格式)圖片數據
var imgData= mycanvas.toDataURL("image/png");
如果要提供給用戶下載用
window.location.href=imgData ;
2 js將數據通過hidden類型input傳給jsp處理
index.html
function renum(){
document.getElementById("hp").value= "abc";
document.forms.myForm.submit();
}
t.jsp
String sDate =(String)request.getParameter("fuck");
out.println("comeon--->"+sDate);
%>
微信本身瀏覽器不支持form表單提交,被sb騰訊閹割了
可以用如下替代方案get在傳輸數據量上有問題,IE對URL長度的限制是2083字節(2K+35)。對於其他瀏覽器,如Netscape、FireFox等,理論上沒有長度限制,其限制取決於操作系統的支持,微信瀏覽器大概也在2k左右,粗略算了下png圖片大概能傳30*30-40*40之間,跟沒有差不多吧,蛋疼
var mycanvas = document.getElementById("canvas");
var imaged = mycanvas.toDataURL("image/png");
var url = "http://192.168.1.103:8080/html5Paint/html5/t.jsp?hid="+imaged;
window.open(url)
關於微信瀏覽器可以使用另外的方法,不在頁面中寫form直接用js實現post
function post(URL, PARAMS) {
var temp = document.createElement("form");
temp.action = URL;
temp.method = "post";
temp.style.display = "none";
for (var x in PARAMS) {
var opt = document.createElement("textarea");
opt.name = x;
opt.value = PARAMS[x];
// alert(opt.name)
temp.appendChild(opt);
}
document.body.appendChild(temp);
temp.submit();
return temp;
}
//調用方法 如
post('pages/statisticsJsp/excel.action', {html :prnhtml,cm1:'sdsddsd',cm2:'haha'});
這樣就可以在微信頁面中使用post無限制傳數據了
3 jsp中使用java解碼base64,並生成相應格式的圖片文件
特殊說明:canvas生成的數據格式如下"data:image/png;base64,iVBORw0KGg........."
需要把data:image/png;base64,截掉,后面的數據就可以直接轉二進制並生成圖片
sun.misc.BASE64Decoder找不到的問題,在工程配置中刪除jre再重新引入jre就可解決
傳不了代碼,就傳圖