2017-05-20 55 views
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?

非常感謝您

+0

輸入的'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

+0

謝謝,我根據你的建議嘗試了(我編輯了這篇文章),但仍然無法看到我的servlet中的任何文件或圖像。大小爲「0」,內容類型爲「application/octet-stream」 – Talgat

+0

我犯了一個錯誤,它設置'value'屬性不能將畫布圖像轉換爲'輸入文件',並且轉換可能很複雜。所以eaiser的方法是將'dataUrl'值(值爲char序列)發送給Servlet。有兩種方式發送它,一種是在表單中將值設置爲'input ='hidden''並使用提交按鈕進行提交,另一種方式是使用Ajax進行發送。在Servlet獲得'dataUrl'字符串值後,您可以將它轉換爲帶有Java代碼的文件映像。 [http://stackoverflow.com/a/24163254/5374508](http://stackoverflow.com/a/24163254/5374508)也許有用。 – HaoChih

回答

0

有兩種方法來發送,一個在形式上設定值的輸入=「隱藏」和一個提交按鈕,anothre方式使用Ajax發送提交。在Servlet獲得dataUrl字符串值後,您可以將其轉換爲具有Java代碼的文件圖像。 http://stackoverflow.com/a/24163254/5374508也許有用。

HaoChih May 21 at 16:50