首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >由于安全原因,无法获得在浏览器中丢弃的文件的完整路径。该怎么办呢?

由于安全原因,无法获得在浏览器中丢弃的文件的完整路径。该怎么办呢?
EN

Stack Overflow用户
提问于 2020-01-27 18:48:00
回答 1查看 1.5K关注 0票数 0

我正在使用Django开发一个web应用程序,它应该管理和处理本地intranet中的大量用户文件。由于Django应用程序和用户文件将托管在同一个本地网络中,因此没有必要上传文件,可以通过用户视图为Django提供文件的完整网络路径。

我意识到,由于不可能的原因,从浏览器获得完整的文件路径是安全性

用户每天要处理的文件有一个(约150-200),所以要求用户手动复制粘贴完整文件路径到应用程序是不可能的。最初的设计方法假设用户将文件从Windows拖放到浏览器中的专用区域.

我有什么选择,社区?

  1. 重写所有前端作为电子应用程序(哎呀!)只使用因为它!),并且只使用Django作为REST后端;
  2. 将所有东西重写为桌面应用程序,失去Django提供的所有优势(授权、身份验证、ORM、管理面板、天哪-很多);
  3. 第三个有趣的选择

我觉得有点困住了。需要一些建议。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2020-01-30 16:55:13

好吧..。

我解决了我的问题。血比预期少得多,我很高兴。:)

首先,我将电子和一个最小的样板安装到我的项目中的一个新文件夹中。

在样板中有一个名为main.js (或index.js,取决于样板)的文件,它定义了电子应用窗口及其内容。内部是将内容加载到电子BrowserWindow对象的行:

代码语言:javascript
运行
复制
mainWindow.loadFile(path.join(__dirname, 'index.html'));

幸运的是,BrowserWindow对象确实有方法loadURL,它可以用来加载网页而不是本地html文件的

代码语言:javascript
运行
复制
mainWindow.loadURL('http://127.0.0.1:8000');

这意味着Django呈现的所有页面都将在电子浏览器中显示,电子浏览器运行的是node.js,而不是标准的浏览器javascript引擎。因此,Django页面模板中的代码将完美地工作:

代码语言:javascript
运行
复制
<h1 id="holder">DROP FILES HERE</h1>
<p id="dropped"></p>

<script>
    const dropZone = document.getElementById('holder');

    dropZone.addEventListener('drop', (e) => {
      e.preventDefault();
      e.stopPropagation();
      let filesList = '\n';
      for (const f of e.dataTransfer.files) filesList += f.path + '\n';
      document.getElementById('dropped').innerHTML = `Full file paths: ${filesList}`;
    });

    dropZone.addEventListener('dragover', (e) => {
      e.preventDefault();
      e.stopPropagation();
    });
</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59937110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档