【问题标题】:Is it possible to capture screen from client side and store it to server side ? (PHP)是否可以从客户端捕获屏幕并将其存储到服务器端? (PHP)
【发布时间】:2012-01-23 19:15:40
【问题描述】:

我现在正尝试在客户端进行屏幕截图。因为我使用了“imagegrabscreen()”函数。我发现它只能在服务器端捕获屏幕。我尝试找到新功能,发现仅在客户端捕获屏幕但也将其存储在客户端上。我有一些临时的想法,我将在客户端使用屏幕捕获并使用 javascript 通过批处理调用 ftp 函数并将这些图像文件传输到集中式服务器。 (需要将所有屏幕截图文件保存在同一个地方。)

如果有什么想法请指教。

提前致谢

【问题讨论】:

  • 谢天谢地,没有。想一想,想想它会给世界带来的安全风险。
  • 查看重复问题:Website screenshots using PHP
  • @BrianRoach:可以使用JS获取浏览器窗口的截图。看我的回答。有哪些安全威胁?它遵循与 XHR 相同的“同源”策略,您只能获取从您自己的服务器发送的代码截图
  • @JuanMendes - OP 没有说“浏览器中显示的当前页面”,他说的是“屏幕”;在我的世界里,浏览器标签不是“屏幕”。我猜你可以从那里得到安全问题:)

标签: php javascript html screenshot


【解决方案1】:

使用您描述的任何技术都无法做到这一点,除非您所说的 JavaScript 是指调用某些 ActiveX、浏览器插件、Java 或您已安装在客户端计算机上的一些实际可执行代码。

你需要先在客户端机器上安装一些东西,集成到用户的网络浏览器中,并通过 JavaScript 提供一个界面。

【讨论】:

    【解决方案2】:

    如果您对 Firefox 没问题,请查看此答案:take screen shot using only js in firefox extension

    <canvas id='my-canvas'></canvas>
    <script> 
    var canvas = document.getElementById('my-canvas');
    var ctx = canvas.getContext("2D");
    // Draw the window at the top left of canvas, width=100, height=200, white background
    ctx.drawWindow(window, 0,0, 100, 200, "rgb(255,255,255)");
    // Open another window with the thumbnail as an image
    open(canvas.toDataURL("image/png"));
    </script>
    

    您的画布将包含窗口的屏幕截图,您可以使用 Ajax 轻松将该图像发送到服务器,因为对 canvas.toDataUrl() 的调用会返回 Base64 编码的图像。

    此功能仅适用于以 Chrome 权限运行的代码https://developer.mozilla.org/en/Drawing_Graphics_with_Canvas#Rendering_Web_Content_Into_A_Canvas

    这就是为什么 http://mxr.mozilla.org/mozilla/source/content/canvas/src/nsCanvasRenderingContext2D.cpp#2352

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-21
      • 1970-01-01
      • 2018-03-30
      • 2018-04-02
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      相关资源
      最近更新 更多