1

我目前正在尝试从用户上传到我的 Django 应用程序的媒体存储库的文档中提取图像。目前对我有用的代码是:

 html = pypandoc.convert(
        tmp_loc,
        'html5',
        extra_args=['--extract-media=']
        )

这会正确地将图像提取到媒体目录中,为 image01.jpg
在 HTML 中,img src 是:

<img src="/media/image01.jpg" />

现在的问题是,当用户上传另一个也有图像的 docx 时,它会在上传时替换上一个图像,因为它也以名称 image01.jpg 保存。

为了解决这个问题,我认为我们可以在媒体存储库中创建一个新文件夹,新文件夹的名称将是 doc-name。所以现在代码看起来像这样:

html = pypandoc.convert(
        tmp_loc,
        'html5',
        extra_args=['--extract-media=/media/<some_doc_name>']
        )

但是当我运行它时,我收到以下错误:

Pandoc died with exitcode "1" during conversion: b'pandoc:     /media/docs: createDirectory: permission denied (Permission denied)\n'

有人可以指导我出了什么问题吗?如何解决这个问题?任何解决此问题的替代方法也将不胜感激!

我在 python 中使用 Pypandoc 模块。

4

1 回答 1

0

您得到的错误清楚地表明您无权在 /media/docs 下创建目录

发生这种事情的原因可能有多种

  • 您无权在“/media/docs”下创建子目录 - 只需更改权限
  • 您有权限,但您正在以其他没有权限的用户名运行您的应用程序 - 创建组并更改该组的权限
  • 您想提取到应用程序下的“media”目录,而不是系统根目录“/media”-您的路径指定错误-应该在例如“/home/user/program/media/docs”或“media”之前有“more” /docs”(不带前导“/”)
  • 您正在尝试将数据提取到不存在的子目录,而您的程序无法处理这种情况,因为无法创建“父”目录 - 所以只需确保创建了该目录

最后一件事 - 如果您正在上传文档,不要假设它们确实有唯一的名称,使用唯一的东西(如创建记录的主键),或者通过验证该目录不存在来检查唯一性,如果它存在,创建新的一个在末尾有一些额外的数字或随机文本。

于 2016-06-05T10:19:52.710 回答