How to upload a screenshot using html2canvas?

后端 未结 3 1097
遇见更好的自我
遇见更好的自我 2020-12-01 08:29

Using html2canvas how can I save a screen shot to an object? I\'ve been exploring the demos, and see that the function to generate the screenshot is generated as follows:

3条回答
  •  被撕碎了的回忆
    2020-12-01 09:31

    //Here I am using html2Canvas to capture screen and Java websockets to transfer data to server
    //Limitation:Supported on latest browsers and Tomcat
    Step1)Client Side : webSock.html  
       
    >
    
    
    
    Tomcat web socket
     
     
    
    
    
    
      
    Step2)Server Side File 1) package Arun.Work; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.MappedByteBuffer; import java.nio.channels.AsynchronousFileChannel; import java.nio.channels.FileChannel; import java.nio.charset.Charset; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import javax.servlet.http.HttpServletRequest; import org.apache.catalina.websocket.MessageInbound; import org.apache.catalina.websocket.WsOutbound; /** * Need tomcat-koyote.jar on class path, otherwise has compile error * "the hierarchy of the type ... is inconsistent" * * @author Arun * */ public class MyInBound extends MessageInbound { private String name; private WsOutbound myoutbound; private String targetLocation; public MyInBound(HttpServletRequest httpSerbletRequest, String targetLocation) { this.targetLocation = targetLocation; } @Override public void onOpen(WsOutbound outbound) { System.out.println("Web Socket Opened.."); /*this.myoutbound = outbound; try { this.myoutbound.writeTextMessage(CharBuffer.wrap("Web Socket Opened..")); } catch (Exception e) { throw new RuntimeException(e); }*/ } @Override public void onClose(int status) { System.out.println("Close client"); // remove from list } @Override protected void onBinaryMessage(ByteBuffer arg0) throws IOException { System.out.println("onBinaryMessage Data"); try { writeToFileNIOWay(new File(targetLocation), arg0.toString() + "\n"); } catch (Exception e) { e.printStackTrace(); } finally { //this.myoutbound.flush(); } }// end of onBinaryMessage @Override protected void onTextMessage(CharBuffer inChar) throws IOException { System.out.println("onTextMessage Data"); try { writeToFileNIOWay(new File(targetLocation), inChar.toString() + "\n"); } catch (Exception e) { e.printStackTrace(); } finally { //this.myoutbound.flush(); } }// end of onTextMessage public void writeToFileNIOWay(File file, String messageToWrite) throws IOException { System.out.println("Data Location:"+file+" Size:"+messageToWrite.length()); //synchronized (this){ byte[] messageBytes = messageToWrite.getBytes(); RandomAccessFile raf = new RandomAccessFile(file, "rw"); raf.seek(raf.length()); FileChannel fc = raf.getChannel(); MappedByteBuffer mbf = fc.map(FileChannel.MapMode.READ_WRITE, fc.position(), messageBytes.length); mbf.put(messageBytes); fc.close(); //} }//end of method /* * //Working Fine public void writeToFileNIOWay(File file, String * messageToWrite) throws IOException { byte[] messageBytes = * messageToWrite.getBytes(Charset.forName("ISO-8859-1")); RandomAccessFile * raf = new RandomAccessFile(file, "rw"); raf.seek(raf.length()); * FileChannel fc = raf.getChannel(); MappedByteBuffer mbf = * fc.map(FileChannel.MapMode.READ_WRITE, fc.position(), * messageBytes.length); * * mbf.put(messageBytes); fc.close(); } */ } File 2) package Arun.Work; import java.io.File; import java.util.concurrent.ConcurrentHashMap; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import org.apache.catalina.websocket.StreamInbound; import org.apache.catalina.websocket.WebSocketServlet; /** * WebSocketServlet is contained in catalina.jar. It also needs servlet-api.jar * on build path * * @author Arun * */ @WebServlet("/wsocket") public class MyWebSocketServlet extends WebSocketServlet { private static final long serialVersionUID = 1L; // for new clients, private static ConcurrentHashMap clients = new ConcurrentHashMap(); @Override protected StreamInbound createWebSocketInbound(String protocol, HttpServletRequest httpServletRequest) { // Check if exists HttpSession session = httpServletRequest.getSession(); // find client StreamInbound client = clients.get(session.getId()); if (null != client) { return client; } else { System.out.println(" session.getId() :"+session.getId()); String targetLocation = "C:/Users/arsingh/Desktop/AnupData/DATA/"+session.getId(); System.out.println(targetLocation); File fs=new File(targetLocation); boolean bool=fs.mkdirs(); System.out.println(" Folder created :"+bool); client = new MyInBound(httpServletRequest,targetLocation+"/Output.txt"); clients.put(session.getId(), client); } return client; } /*public StreamInbound getClient(String sessionId) { return clients.get(sessionId); } public void addClient(String sessionId, StreamInbound streamInBound) { clients.put(sessionId, streamInBound); }*/ }

提交回复
热议问题