我目前正在尝试从用户上传到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"(不带前导"/")
- 您正试图将数据提取到不存在的子目录中,而您的程序无法处理这种情况,因为无法创建"父"目录,所以只需确保创建了该目录
最后一件事——如果你正在上传文档,不要假设它们确实有唯一的名称,使用唯一的东西(比如创建的记录的主键),或者通过验证目录不存在来检查唯一性,如果目录存在,则在末尾创建一个带有一些额外数字或随机文本的新目录。