0
我試圖上傳一個畫布圖像(這是從網絡攝像頭拍攝)到一個文件,然後將其保存到servlet。如何以多部分形式將畫布圖像上傳到java servlet?
JSP文件:
<form id="submissionForm" action="/PSA/SaveImageServlet" method="POST"
name="registrationForm" enctype="multipart/form-data">
<input name="camera1Image" type="image" id="camera1ImageID" style="visibility:hidden" />
<input name="camera1File" type="file" id="camera1FileID" style="visibility:hidden" />
<img name="camera1Img" src="" id="camera1ImgID" style="visibility:hidden" />
</form>
使用Javascript:
var canvas1 = document.querySelector('#canvas1');
var ctx = canvas1.getContext('2d');
w = canvas1.width;
h = canvas1.height;
ctx.drawImage(video1, 0, 0, w, h);
var dataUrl = canvas1.toDataURL("image/jpeg", 0.95);
var image = new Image();
image.src = dataUrl;
$("#camera1ImageID").attr("src", image.src);
$("#camera1FileID").attr("val", image.src);
$("#camera1ImgID").attr("src", image.src);
和該servlet我有輸出: 的contentType:應用/八位字節流 大小:0
我設法只提交一個圖像數據與Ajax,但它可能做到沒有Ajax?
非常感謝您
輸入的'src'屬性只能與'input type ='image''一起使用。請參閱此處:[https://www.w3schools.com/tags/att_input_src.asp](https://www.w3schools.com/tags/att_input_src.asp)。所以試着用'image.src'爲你的文件輸入設置'value'屬性,看看它是否有效。 – HaoChih
謝謝,我根據你的建議嘗試了(我編輯了這篇文章),但仍然無法看到我的servlet中的任何文件或圖像。大小爲「0」,內容類型爲「application/octet-stream」 – Talgat
我犯了一個錯誤,它設置'value'屬性不能將畫布圖像轉換爲'輸入文件',並且轉換可能很複雜。所以eaiser的方法是將'dataUrl'值(值爲char序列)發送給Servlet。有兩種方式發送它,一種是在表單中將值設置爲'input ='hidden''並使用提交按鈕進行提交,另一種方式是使用Ajax進行發送。在Servlet獲得'dataUrl'字符串值後,您可以將它轉換爲帶有Java代碼的文件映像。 [http://stackoverflow.com/a/24163254/5374508](http://stackoverflow.com/a/24163254/5374508)也許有用。 – HaoChih