【问题标题】:How to use pdf.js with django如何在 django 中使用 pdf.js
【发布时间】:2016-01-22 04:55:12
【问题描述】:

我的静态文件中的pdf.js(如下图):
/static/js/pdf.js

我可以显示位于static 文件夹中的pdf(如下所示):
/static/sample-pdf.pdf

但我希望能够显示位于我的media 文件夹中的 pdf(因为 pdf 应该作为媒体文件存储在 django 中)

media文件夹与static文件夹在同一目录下(如下图):
project/static和
project/media

有可能吗?

询问是否需要更清晰。

【问题讨论】:

  • 明确一点,您想从 project/static/pdf.js 访问您的 project/media 文件夹中的 PDF?你就不能../media/sample-pdf.pdf吗?
  • 如果目标 pdf 在 media 文件夹中,那么我该怎么做 ../static/sample-pdf.pdf ??????
  • 能够做到这一点static/js/viewer.html/?file=/static/sample-pdf.pdf 但不能做到这一点static/js/viewer.html/?file=/media/sample-pdf.pdf
  • 我认为它无法访问 javascript 文件来自的 url 之外的任何内容............是 tat ryt 吗?

标签: django pdf static


【解决方案1】:

这将在目录中的 html 页面中显示您的文件

<iframe src="../media/sample-pdf.pdf" id = "pdf" style="width:1500px; height:1500px;" frameborder="0"></iframe>

检查浏览器控制台以检查路径是否正确,如果它没有显示。就这么简单

【讨论】:

    【解决方案2】:

    尝试在你的 settings.py 中设置你的 MEDIA_ROOT 和 MEDIA_URL 看看它是否有效。打开 settings.py 并添加:

    # Absolute filesystem path to the directory that will hold user-uploaded files.
    # Example: "/var/www/example.com/media/"
    # MEDIA_ROOT is used when users upload media.
    
    MEDIA_ROOT = '/home/absolute/path/to/your/media/folder'
    
    # URL that handles the media served from MEDIA_ROOT. Make sure to use a
    # trailing slash.
    # Examples: "http://example.com/media/", "http://media.example.com/"
    MEDIA_URL = '/media/'
    

    然后,你可能还需要在你的 URLs.py 中添加这个:

    from . import settings
    import django.views.static
    
    url(r'^(.*?)media/(?P<path>.*)$', django.views.static.serve,
                 {'document_root': settings.MEDIA_ROOT}),
    

    【讨论】:

    • 你能解释一下 URLs.py sn-p 吗?
    • @dreamer 据我了解,就像您可以使用static/ URL 访问的静态文件夹一样,上面的 sn-p 允许您访问settings.MEDIA_ROOT(您的媒体文件夹)通过转到media/ URL。使用此代码,您还可以允许用户上传文件(将保存在您的媒体文件夹中)。要访问这些媒体文件,请访问 media/FileName。 Django 捕获fileName 并将其传递给处理它的django.views.static.serve(与处理static 的方式类似)。
    • @dreamer 我从这里得到了 URLs.py sn-p:stackoverflow.com/questions/5517950/… 并且在这里的文档中也谈到了一点:docs.djangoproject.com/en/1.8/howto/static-files/… 请记住,它是用于开发的对于您的生产服务器,您可能需要做一些不同的事情(如文档中所述)。
    • 所以你说,上面的 sn-p 将在127.0.0.1:8000/static/js/pdf.js/web/viewer.html?file=/media/sample-pdf.pdf提供文件
    • @dreamer 据我了解,应该。试试看,如果您遇到任何错误(以及错误是什么),请告诉我。
    猜你喜欢
    • 2020-03-30
    • 2020-12-22
    • 2019-09-22
    • 2018-09-07
    • 1970-01-01
    • 2012-03-08
    • 2019-08-09
    • 2019-08-17
    • 2021-07-02
    相关资源
    最近更新 更多