文件下载到本地

文件从web服务器下载到用户本地与上传文件不同,出于安全考虑,不允许客户浏览服务器目录结构来选择要下载的文件,而是通过服务器请求,下面是django框架下的解决方法:

后台代码:

    ......
    thefile = open(file_dir).read()
    response = HttpResponse(thefile,mimetype='application/force-download')
    response['Content-Disposition'] = 'attachment; filename=%s' % smart_str(file_name)
    return response

在一个Django视图函数中 必须接受一个HttpRequest实例作为它的第一个参数, 返回一个HttpResponse实例

从一个视图返回一个非 HTML 内容的关键是在构造一个HttpResponse类时,需要指定 mimetype 参数。通过改变 MIME 类型,我们可以告知浏览器将要返回的数据是另一种不同的类型。因此把mimetype设置为下载类型。

代码中第三行的作用是在浏览器弹出的下载对话框中设置默认的下载文件名

这样页面就会自动弹出下载对话框,进行下载操作。

posted @ 2013-04-02 14:02  编缘  阅读(363)  评论(0编辑  收藏  举报