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

时间:2016-05-13 16:16:43

标签: python django pandoc django-media

我目前正在尝试从用户正在上传到我的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模块。

1 个答案:

答案 0 :(得分:0)

错误您明确表示您无权在/ media / docs

下创建目录

出现这种情况可能有多种原因

  • 您无权在&#34; / media / docs&#34;下创建子目录。 - 只需更改权限
  • 您拥有权限,但是您在其他没有权限的用户名下运行您的应用程序 - 为该组创建组和更改权限
  • 你想要提取到&#34;媒体&#34;您的应用程序下的目录,而不是系统根目录&#34; / media&#34; - 你的道路被错误地指定 - 应该有更多&#34;更多&#34;例如之前&#34; /家庭/用户/编程/媒体/文档&#34;或者&#34;媒体/文档&#34; (没有领先&#34; /&#34;)
  • 您正在尝试将数据提取到不存在的子目录,并且您的程序无法处理这种情况,因为无法创建&#34; parent&#34;目录 - 所以只需确保创建目录

最后一件事 - 如果你要上传文件,不要认为它们确实有唯一的名称,使用一些独特的东西(比如创建记录的主键),或者通过验证该目录不存在以及它是否存在来检查唯一性,在最后创建一个带有一些额外数字或随机文本的新文件。