Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度静态文件下载_Javascript_Angularjs_Django_Html - Fatal编程技术网

Javascript 角度静态文件下载

Javascript 角度静态文件下载,javascript,angularjs,django,html,Javascript,Angularjs,Django,Html,我正在尝试使用Angular创建文件下载或查看按钮。每个用户的文件都是相同的,我希望通过将静态文件放在前端来避免对后端的调用 大多数解决方案需要使用“download”属性,该属性与浏览器不太兼容(),或者从服务器获取生成的文件。我只是想允许用户打开或下载一个静态pdf文件 我尝试了这样的链接: <a href="/attachment.pdf" target="_self" >Attachment</a> 但这寻找一个后端链接,我显然没有。我不想创建后端路由,只想

我正在尝试使用Angular创建文件下载或查看按钮。每个用户的文件都是相同的,我希望通过将静态文件放在前端来避免对后端的调用

大多数解决方案需要使用“download”属性,该属性与浏览器不太兼容(),或者从服务器获取生成的文件。我只是想允许用户打开或下载一个静态pdf文件

我尝试了这样的链接:

<a href="/attachment.pdf" target="_self" >Attachment</a>

但这寻找一个后端链接,我显然没有。我不想创建后端路由,只想为静态文件提供服务


这可能吗?我有一个Angular前端和Django后端。

如果您尝试将pdf文件与Angular应用程序的javascript代码连接在一起,我认为这是不可能的(或者至少我不知道如何做,也不认为这是一个好主意/值得)

您可以将您的pdf文件作为任何其他静态文件提供,这样您就可以通过让用户访问文件的url来访问它,如:

<a href="/static/files/myfile.pdf" target="_self" >Attachment</a>

如果您尝试将pdf文件与angular应用程序的javascript代码连接在一起,我认为这是不可能的(或者至少我不知道如何做,也不认为这是一个好主意/值得)

您可以将您的pdf文件作为任何其他静态文件提供,这样您就可以通过让用户访问文件的url来访问它,如:

<a href="/static/files/myfile.pdf" target="_self" >Attachment</a>

从对我问题的评论中可以看出,从前端获取PDF是不可能的。我最终创建了一个后端路径来获取PDF,然后在一个新选项卡中打开它。这是我使用的代码

从服务器获取文件的可单击链接:

<a ng-click="viewFile()" href="">Attachment</a>
后端路由(在Django中):


感谢大家帮助我们更好地理解使用客户机-服务器应用程序获取文件的本质。

从对我的问题的评论中可以看出,从前端获取PDF是不可能的。我最终创建了一个后端路径来获取PDF,然后在一个新选项卡中打开它。这是我使用的代码

从服务器获取文件的可单击链接:

<a ng-click="viewFile()" href="">Attachment</a>
后端路由(在Django中):



感谢大家帮助我们更好地理解使用客户机服务器应用程序获取文件的本质。

将静态文件放置在前端是什么意思?来源是什么?看看
jspdf.js
library我的意思是,我希望将pdf文件与我的所有模板、控制器等一起存储在前端文件中。这样,我就不必访问后端来获取它。但您的文件必须存储在服务器(即后端)中,然后由客户端下载。我在这里没有得到什么?我想我对前端不可能访问自己的当前工作目录、导航到文件等这一事实感到困惑。如果这是一个实际的pdf文件概念没有任何意义,那么这种操作必须在服务器上完成。它必须以某种方式来自服务器,并且根本不清楚您试图绕过什么您所说的将静态文件放置在前端是什么意思?来源是什么?看看
jspdf.js
library我的意思是,我希望将pdf文件与我的所有模板、控制器等一起存储在前端文件中。这样,我就不必访问后端来获取它。但您的文件必须存储在服务器(即后端)中,然后由客户端下载。我在这里没有得到什么?我想我对前端不可能访问自己的当前工作目录、导航到文件等这一事实感到困惑。如果这是一个实际的pdf文件概念没有任何意义,那么这种操作必须在服务器上完成。它必须以某种方式来自服务器,但根本不清楚您试图绕过的是什么,重点是什么?为什么不在没有所有不必要的代码的情况下打开url呢?使用dev tools network仍然可以检测到路径,因此您没有屏蔽任何内容。我没有试图屏蔽任何内容,我只是想用一种非常简单的方法来提供pdf文件并显示它。我不知道如何以更简单的方式从服务器提供文件,或者在前端显示文件而不创建blob。
window.open('/attachment.pdf')
当我刚刚放入这样的路由时,Django假设我正在尝试使用预定义的后端路由。解决这个问题的方法是实际创建后端路由并提供pdf。它不允许我随意获取这样的文件。好吧,不管什么都可以。我假设是问题中提到的静态资产文件,这有什么意义?为什么不在没有所有不必要的代码的情况下打开url呢?使用dev tools network仍然可以检测到路径,因此您没有屏蔽任何内容。我没有试图屏蔽任何内容,我只是想用一种非常简单的方法来提供pdf文件并显示它。我不知道如何以更简单的方式从服务器提供文件,或者在前端显示文件而不创建blob。
window.open('/attachment.pdf')
当我刚刚放入这样的路由时,Django假设我正在尝试使用预定义的后端路由。解决这个问题的方法是实际创建后端路由并提供pdf。它不允许我随意获取这样的文件。好吧,不管什么都可以。我假设是静态资产文件,如问题中所述angular是否需要对下载的响应执行任何特殊操作?angular不需要执行任何操作,这将是浏览器的责任angular是否需要对下载的响应执行任何特殊操作?angular不需要执行任何操作,这将是浏览器的责任
def ctm_file(request):
    filename = "ctm_form.pdf" # Select your file here.
    wrapper = FileWrapper(file(filename))
    response = HttpResponse(wrapper, content_type='text/plain')
    response['Content-Length'] = os.path.getsize(filename)
    return response