如何使用pypandoc将文档中的图像提取到Django项目媒体存储库中的不同文件夹中



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

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

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

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

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

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

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模块。

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

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

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

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

最新更新