当前位置: 首页 > 面试题库 >

将下载的文件保存到磁盘时的浏览器事件

况经纬
2023-03-14
问题内容

我有敏感文件要下载给用户,每个用户只能 下载 给定文件一次。如果下载失败,我希望允许重新下载,但不允许其他方式。

仅仅依靠在服务器上记录/处理文件下载 请求 是不够的-我需要确定性地知道文件何时完成以及在客户端是否就位,因为我的许多用户都在频繁掉线的环境中工作。

最有效的方法是,浏览器从“另存为…”对话框中暴露出一个“文件已保存”事件,该事件可能会链接到下载页面上的JavaScript函数(该事件可以发回到服务器上)。但是,直觉表明,如果浏览器公开了此功能,则可能会存在安全漏洞,因为它会在沙盒外潜入。我不确定这是否有可能。

有任何想法吗?

编辑: 我不应该在原始问题中使用“安全性”一词,对不起触发红色鲱鱼。

编辑2:
我的“安全性”措辞误导了人们,使他们陷入离题的技术安全性问题,但是你们两个都证实了我的怀疑,即“不,对此不存在浏览器支持”。我正在用答案标记第一位评论者,因为他的第一句话符合我的要求。谢谢大家


问题答案:

JavaScript中没有这种浏览器事件,即使您不信任用户的浏览器也无法为您提供安全性。

最好使用GUID为每次下载生成唯一的URL。然后,您可以例如:

  • 使URL仅在特定时间段内有效
  • 仅允许从与唯一URL关联的特定IP地址进行传输
  • 让您的服务器端代码检测唯一URL的内容何时已完全传输,然后使URL无效。

让我澄清一下最后一个项目符号。假设你使用的是Java-你会in.read(buffer)out.write(buffer)一个循环,直到EOF。如果客户端断开连接,您将收到一个IOExceptionout.write()并且可以告诉您从中断的客户端下载成功。在其他平台上,我敢肯定有办法判断连接是否丢失。



 类似资料:
  • 下面的代码在内存中创建了一个文件。 我想把那个pdf文件保存在磁盘上以便查看。我将如何在python中实现它?

  • 我的项目是一个web应用程序。 目前,它有一种生成文本文件并将其发送到客户端浏览器下载的方法。 我需要修改它,以强制浏览器将文件保存在客户端计算机上的自定义(预定义)位置。

  • 问题内容: 我们一直在寻找答案,但是还没有找到解决方案。 我们有一个Web服务器,允许用户下载动态生成的文件(pdf),并通过servlet提供服务。我们想知道下载何时完成(以及如何:成功,失败,用户取消了吗?)。 没有用户输入,有没有办法知道这一点?这些文件相对较小,因此不需要进度条功能,但是我们需要某种“挂勾”功能,可以在下载完成后向您报告。这可能吗? [edit]浏览器端将具有什么功能来检测

  • 工具:Ubuntu、Python、Selenium、Firefox 我打算从订阅网站自动下载图像文件。我只有通过付费订阅才能访问服务器。为了避免每次文件下载都要点击一个按钮,我决定使用Python、Selenium和Firefox将其自动化。(我两天来第一次同时使用这三种饼干。我对饼干也知之甚少。) 我有兴趣按顺序或偏好下载以下三种格式:['EPS'、'PNG'、'JPG']。网站上提供了每种格式

  • 我是Python新手,我一直在学习Q 有人能给我解释一下“通过http下载文件”和“在Windows中保存到磁盘”的简单解决方案吗? 我也不知道如何使用shutil和os模块。 我想下载的文件不到500 MB,是一个文件。gz存档文件。如果有人能解释如何提取档案并利用其中的文件,那就太好了! 这里有一个部分的解决方案,我写了从各种答案组合: 有人能指出错误(初学者级别)并解释一下更简单的方法吗?

  • 问题内容: 我的目标: 显示一个对话框,提示用户保存从AWS下载的文件。 我的问题: 我目前正在使用awssum- amazon-s3创建下载流。但是,我仅设法将文件保存到服务器或将其流式传输到命令行…如您从我的代码中看到的那样,我的最后一次尝试是尝试手动设置失败的内容处置头。我无法使用res.download(),因为已经设置了标头? 我如何实现我的目标? 我的节点代码: 我的角度代码: 编写此