Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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
PDF作为对后android浏览器的响应,执行额外的GET并将其另存为文件_Android_Django_Pdf_Post_Get - Fatal编程技术网

PDF作为对后android浏览器的响应,执行额外的GET并将其另存为文件

PDF作为对后android浏览器的响应,执行额外的GET并将其另存为文件,android,django,pdf,post,get,Android,Django,Pdf,Post,Get,我的Django视图通过pycairo生成一个PDF来响应一篇文章(我不是为了响应文章而重定向)。当我使用桌面浏览器发布时,我可以使用Adobe Reader或Document Viewer保存和/或查看PDF。然而,当我通过android浏览器发布时,Adobe PDF Reader和ThinkFree查看器都报告该文件已损坏 查看我的appserver上的日志文件,两个Android浏览器都会发送一条帖子,然后立即发送同一页面的GET: [24/Sep/2010:22:49:20 -0500

我的Django视图通过pycairo生成一个PDF来响应一篇文章(我不是为了响应文章而重定向)。当我使用桌面浏览器发布时,我可以使用Adobe Reader或Document Viewer保存和/或查看PDF。然而,当我通过android浏览器发布时,Adobe PDF Reader和ThinkFree查看器都报告该文件已损坏

查看我的appserver上的日志文件,两个Android浏览器都会发送一条帖子,然后立即发送同一页面的GET:

[24/Sep/2010:22:49:20 -0500] "POST /courses/blank/create/ HTTP/1.1" 200 8895 "http://example.com/create/" "Mozilla/5.0 (Linux; U; Android 2.1-update1; en-us; SPH-D700 Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17"

[24/Sep/2010:22:49:20 -0500] "GET /courses/blank/create/ HTTP/1.1" 200 9432 "-" "Mozilla/5.0 (Linux; U; Android 2.1-update1; en-us; SPH-D700 Build/ECLAIR) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17"
当我查看保存到手机上的文件时,它是GET请求的HTML

以下是视图的框架:

def create(request, template="blankgrids/create.html"):
    if request.method == 'POST':
        form = BlankGridForm(request.POST)
        if form.is_valid():
            response = HttpResponse(mimetype='application/pdf')
            response['Content-Disposition'] = 'attachment; filename=example.pdf'
            # snipped pycairo code that writes directly into response
            return response
    else:
        form = BlankGridForm()

    return render_to_response(template,
                          {'form': form},
                          context_instance=RequestContext(request))

所以我想知道是什么导致android浏览器执行GET?我不知道是什么让它执行GET,但您可能无法更改它的行为。您可以更改代码,以便帖子返回重定向到PDF的GET。如果您的帖子中有创建PDF所需的数据,您可以将其存储在会话中,也可以将其作为url参数添加,还可以使用安全令牌防止重播等等。

Ned-谢谢您的建议。在该站点中,生成的PDF可以共享,而不是重新生成。因此,我想让邮局检查一下PDF是否存在。如果没有,它会将其生成到磁盘。无论哪种方式,帖子都会重定向到PDF的永久URL。这允许用户进行书签和web服务器进行缓存。奇怪的是,这些移动浏览器有这样的行为。。。