Django:如何允许可疑文件操作/复制文件

2024-04-08

我想做一个SuspiciousFileOperationdjango 默认是不允许的。

我正在编写一个命令(通过运行manage.py importfiles)在我自己编写的 Django 文件存储中导入真实文件系统上给定的目录结构。

我想,这是我的相关代码:

def _handle_directory(self, directory_path, directory):
    for root, subFolders, files in os.walk(directory_path):
        for filename in files:
            self.cnt_files += 1
            new_file = File(directory=directory, filename=filename, file=os.path.join(root, filename),
                 uploader=self.uploader)
            new_file.save()

回溯是:

Traceback (most recent call last):
  File ".\manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "C:\Python27\lib\site-packages\django\core\management\__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Python27\lib\site-packages\django\core\management\base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "C:\Python27\lib\site-packages\django\core\management\base.py", line 285, in execute
    output = self.handle(*args, **options)
  File "D:\Development\github\Palco\engine\filestorage\management\commands\importfiles.py", line 53, in handle
    self._handle_directory(args[0], root)
  File "D:\Development\github\Palco\engine\filestorage\management\commands\importfiles.py", line 63, in _handle_directory
    new_file.save()
  File "D:\Development\github\Palco\engine\filestorage\models.py", line 157, in save
    self.sha512 = hashlib.sha512(self.file.read()).hexdigest()
  File "C:\Python27\lib\site-packages\django\core\files\utils.py", line 16, in <lambda>
    read = property(lambda self: self.file.read)
  File "C:\Python27\lib\site-packages\django\db\models\fields\files.py", line 46, in _get_file
    self._file = self.storage.open(self.name, 'rb')
  File "C:\Python27\lib\site-packages\django\core\files\storage.py", line 33, in open
    return self._open(name, mode)
  File "C:\Python27\lib\site-packages\django\core\files\storage.py", line 160, in _open
    return File(open(self.path(name), mode))
  File "C:\Python27\lib\site-packages\django\core\files\storage.py", line 261, in path
    raise SuspiciousFileOperation("Attempted access to '%s' denied." % name)
django.core.exceptions.SuspiciousFileOperation: Attempted access to 'D:\Temp\importme\readme.html' denied.

The 完整模型可以在 GitHub 上找到 https://github.com/omeinusch/Palco/blob/master/engine/filestorage/models.py. The 完整的命令目前在 gist.github.com 上可用 https://gist.github.com/omeinusch/0c40f9a0e35f2e58adca/d1d2fd506c52065a24f3dfafa27410e1c24a5b11.

如果您不想检查模型:属性file of my File类是一个文件字段 https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.FileField.

我认为,这个问题发生了,因为我只是“链接”到找到的文件。但我需要复制它,对吧?如何将文件复制到文件中?


在 Django 中,可以通过从外部目录读取文件并在项目媒体中创建一个 tmp 文件然后保存在适当的文件中来避免可疑文件操作,如下所示

import tempfile

file_name="file_name.pdf"
EXT_FILE_PATH = "/home/somepath/"
file_path = EXT_FILE_PATH + file_name
if exists(file_path):
    #create a named temporary file within the project base , here in media

    lf = tempfile.NamedTemporaryFile(dir='media')
    f = open(file_path, 'rb')
    lf.write(f.read())
    #doc object with file FileField.

    doc.file.save(file_name, File(lf), save=True)
    lf.close()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django:如何允许可疑文件操作/复制文件 的相关文章

  • 打印 scrapy 请求的“响应”

    我正在尝试学习 scrapy 在遵循教程的同时 我正在尝试进行细微的调整 我想简单地从请求中获取响应内容 然后我会将响应传递到教程代码中 但我无法发出请求并获取响应内容 建议就好 from scrapy http import Respon
  • 如何使用pycaffe重构caffe网络

    我想要的是 加载网络后 我将分解一些特定的图层并保存新的网络 例如 原网 数据 gt conv1 gt conv2 gt fc1 gt fc2 gt softmax New net 数据 gt conv1 1 gt conv1 2 gt c
  • 使用 Django 的 post_save() 信号

    我有两张桌子 class Advertisement models Model created at models DateTimeField auto now add True author email models EmailField
  • Django modelForm 中的文件上传

    我正在尝试在 appengine django 中上传文档 使用纯 django 代码成功上传文档 使用 python manage py runsever 但是当我尝试使用 appengine 项目运行 django 时 它给了我错误 E
  • 在 Python 中使用 sec 函数的反函数

    我正在创建一个程序 用于计算从一定高度范围和设定初始速度发射射弹的最佳角度 在我需要使用的最终方程中 存在一个反 sec 函数 它导致了一些麻烦 我已经导入了数学并尝试使用 asec 无论如何 但是数学似乎无法计算反秒函数 我也明白 sec
  • NLTK、搭配问题:需要解包的值太多(预期为 2)

    我尝试使用 NLTK 检索搭配 但出现错误 我使用内置的古腾堡语料库 I wrote alice nltk corpus gutenberg fileids 7 al nltk corpus gutenberg words alice al
  • Django 本身支持迁移吗

    我听说所有新的 Web 框架 如 ROR Django 等 都遵循敏捷和 TDD 的一般原则 遵循敏捷和 TDD 的一部分是在从一个迭代到另一个迭代时制定自己的设计 这意味着模型及其架构将随着应用程序的不同版本而演变 我知道 ROR 本身支
  • 反加入熊猫

    我有两个表 我想附加它们 以便仅保留表 A 中的所有数据 并且仅在其键唯一时添加表 B 中的数据 键值在表 A 和 B 中是唯一的 但在某些情况下键将出现在表 A 和 B 中 我认为执行此操作的方法将涉及某种过滤联接 反联接 以获取表 B
  • django 模板上的 vscode html 自动套用格式

    我喜欢 VSCode 的保存自动格式功能 直到它弄乱了我的模板代码 它错误地将我的 django 模板语法格式化为一行代码 有时非常长的一行 所以不用这段代码 for row in ABCDEFGH tr for col in 123456
  • 使用循环将对象添加到列表(python)

    我正在尝试使用 while 循环将对象添加到列表中 基本上这就是我想做的 class x pass choice raw input pick what you want to do while choice 0 if choice 1 E
  • 使用 python 将文本发送到带有逗号分隔符的列

    如何使用分隔符 在 Excel 中将一列分成两列 并使用 python 命名标题 这是我的代码 import openpyxl w openpyxl load workbook DDdata xlsx active w active a a
  • 负整数的Python表示

    gt gt gt x 4 gt gt gt print b format x x 4 100 gt gt gt mask 0xFFFFFFFF gt gt gt print b format x mask x mask 4294967292
  • 在pycharm中调试python代码

    这个问题类似于this https stackoverflow com questions 10240018 how to use pycharm to debug python script一 我正在尝试调试pyethapp https
  • 使用 lambda 函数更改属性值

    我可以使用 lambda 函数循环遍历类对象列表并更改属性值 对于所有对象或满足特定条件的对象 吗 class Student object def init self name age self name name self age ag
  • 是否可以写一个负的python类型注释

    这可能听起来不合理 但现在我需要否定类型注释 我的意思是这样的 an int Not Iterable a string Iterable 这是因为我为一个函数编写了一个重载 而 mypy 不理解我 我的功能看起来像这样 overload
  • 是否可以强制浮点数的指数或有效数匹配另一个浮点数(Python)?

    这是我前几天试图解决的一个有趣的问题 是否可以强制一个的有效数或指数float与另一个人一样float在Python中 出现这个问题是因为我试图重新调整一些数据 以便最小值和最大值与另一个数据集匹配 然而 我重新调整后的数据略有偏差 大约小
  • CSV 在列中查找最大值并附加新数据

    大约两个小时前 我问了一个关于从网站读取和写入数据的问题 从那时起 我花了最后两个小时试图找到一种方法来从输出的 A 列读取最大日期值 将该值与刷新的网站数据进行比较 并将任何新数据附加到 csv 文件而不覆盖旧的或创建重复项 目前 100
  • 从 dask 数据框中的日期时间序列获取年份和星期?

    如果我有一个 Pandas 数据框和一个日期时间类型的列 我可以按如下方式获取年份 df year df date dt year 对于 dask 数据框 这是行不通的 如果我先计算 像这样 df year df date compute
  • 具有指定置信区间的 Seaborn 条形图

    我想在 Seaborn 条形图上绘制置信区间 但我已经计算出置信区间 如何让 Seaborn 绘制我的置信区间而不是尝试自行计算它们 例如 假设我有以下 pandas DataFrame x pd DataFrame Group 1 0 5
  • 如何在SqlAlchemy中执行“左外连接”

    我需要执行这个查询 select field11 field12 from Table 1 t1 left outer join Table 2 t2 ON t2 tbl1 id t1 tbl1 id where t2 tbl2 id is

随机推荐

  • Angular:使用 query() + animate() 时如何保持最终动画状态

    看看这个笨蛋 https plnkr co edit mqwJP75zjTUmsqsqRxfH p preview https plnkr co edit mqwJP75zjTUmsqsqRxfH p preview 这是 Angular
  • Oracle SQL 中仅排除一个 MIN 值

    我试图选择一列中除最低值之外的所有值 GameScore 但是当有两个最低值时 我的代码会排除这两个值 我知道它为什么这样做 我只是不知道如何纠正它 并包括两个最低值之一 代码看起来像这样 SELECT Id SUM Score COUNT
  • 是否有 IEEE-754 操作的开源 c/c++ 实现? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 IEEE 754 操作的参考实现 有这样的事吗 我相信 C 库软浮点 http www j
  • 按属性按优先级排序

    我有想要排序的项目 我的项目在模型上计算了属性 包括winning bidding closed and watching 这些属性中的每一个都是 true 或 false 我想对项目进行排序 以便所有获胜项目位于第一 然后是所有投标项目
  • 忽略 doxygen 注释块中的行

    是否可以在 doxygen 注释块中包含将被 doxygen 忽略的内容 换句话说 我们可以在 doxygen 评论块中发表评论吗 背景 我们正在将 Fortran 项目的代码内注释转换为 doxygen 可解析的格式 但是该项目要求代码内
  • C 中的可变长度数组并就地初始化[重复]

    这个问题在这里已经有答案了 C99 允许定义具有非常量大小的数组 即用于定义数组的大小可以在运行时更改 解释它的代码片段是 void dummy function1 unsigned int length char arrA length
  • 什么是沼泽图?

    有人告诉我沼泽图 解释说它们可以通过测量给定产品的传入缺陷率和传出修复率来预测代码质量 不幸的是 我无法找到有关这些图表的更多信息 我想知道这是否是特定于一家公司的术语 你能解释一下什么是沼泽图吗 您可以在这篇关于 CESR 的调试和性能特
  • 在Python中获取不带扩展名的文件名

    如果我有一个类似于以下之一的文件名 1 1 1 1 1 jpg 1 1 jpg 1 jpg 我怎样才能只获取文件名 而不获取扩展名 正则表达式合适吗 在大多数情况下 您不应该为此使用正则表达式 os path splitext filena
  • 如何在异步管道上使用自定义管道?

    我正在尝试在异步管道上创建自定义管道 我尝试了很多解决方案 但仍然不起作用 这是代码片段 Product sort ts 自定义管道 import PipeTransform Pipe from angular core import Ob
  • Angular 4 属性在构建时的对象类型上不存在

    我正在使用 Angular 构建一个项目 我使用 angular cli 启动了该项目 当我尝试运行时ng build prod我不断收到此错误 对象类型上不存在属性 描述 生成此错误的代码如下 export class AppCompon
  • 基于 Spring Java 的静态方法配置

    任何人都可以请建议为什么我们需要使用 a 来声明 PropertySourcesPlaceholderConfigurer beanstatic方法 我刚刚发现 如果我在下面使用非静态 那么 url 将被设置为空值 而不是从属性文件中获取
  • 使用 JavaScript 对象文字表示法的 JavaScript 构造函数

    使用对象字面量表示法在 JavaScript 中构建构造函数的最佳方法是什么 var myObject funca function funcb function 我希望能够打电话 var myVar new myObject 并将参数传递
  • 使用 JavaScript 关闭 Youtube 注释

    目前我知道有三种方法可以禁用 YouTube 视频中的注释 您可以使用 YouTube 设置 这对我不起作用 因为我没有 也不想要 帐户 您可以使用专门的扩展 这可能有用 但我不想为此而拥有一个带有大量选项的成熟扩展 您可以使用 广告 拦截
  • PHPUnit ReflectionException 方法套件不存在

    我正在使用 PHPUnit 版本 3 6 2 并且总是得到 PHP ReflectionException 第 113 行 pathTo pear PHPUnit Runner BaseTestRunner php 中不存在方法套件 运行单
  • 如何通过eclipse连接mysql数据库

    我有一个在 eclipse kepler 中运行的应用程序 我的数据库位于AWS RDS MySQL类型上 我已经导入 mysql connector java gpl 5 1 31 msi 和 aws java sdk 1 8 5 jar
  • 无法使用 WiX 安装程序创建注册表项值

    以下组件按预期执行所有操作 但无法写入最后一个注册表项值 我没有收到任何错误
  • 无法找到哈希字符串“android-P”的目标

    我正在跟进this https codelabs developers google com codelabs mdc 101 java 1教程页面 我得到了与他们在该页面中所说的完全相同的错误 无法在以下位置找到哈希字符串 android
  • 使用 Twitter API 可以追溯到多久以前

    我用 C 开发了一个应用程序 可以将推文提取到数据库中 我目前正在使用 TweetSharp Wrapper 由于最近宣布 Twitter 现在已经对之前的所有推文建立了索引 这使您可以返回到最初的推文 因此我开始怀疑是否有可能返回到某个时
  • RMarkdown 文档中的条件格式表

    例如 我可能想使用以下规则为单元格着色 编辑为不平凡 如果 gt 4 则呈蓝色 如果 3 5 则不填充 如果 gt 3 且 如果 使用 RMarkdown knit 创建具有条件格式的表格 https stackoverflow com q
  • Django:如何允许可疑文件操作/复制文件

    我想做一个SuspiciousFileOperationdjango 默认是不允许的 我正在编写一个命令 通过运行manage py importfiles 在我自己编写的 Django 文件存储中导入真实文件系统上给定的目录结构 我想 这