jquery - Django/jQuery - 读取文件并作为文件下载提示传递给浏览器

标签 jquery python html django

我之前问过一个关于将文件传递到浏览器以便用户收到下载提示的问题。然而,这些文件实际上只是在函数末尾创建的字符串,将它们传递给 iframe 的 src 属性以获得所需效果很简单。

现在我有一个更雄心勃勃的要求,我需要将任何格式的预先存在的文件传递给浏览器。我尝试使用以下代码:

def return_file(request):

    try:
        bob=open(urllib.unquote(request.POST["file"]),"rb")

        response=HttpResponse(content=bob,mimetype="application/x-unknown")
        response["Content-Disposition"] = "attachment; filename=nothing.xls"
        return HttpResponse(response)
    except:
        return HttpResponse(sys.exc_info())

使用我的原始设置,以下 jQuery 足以提供所需的下载提示:

jQuery('#download').attr("src","/return_file/"); 

然而,这将不再有效,因为我需要将 POST 值传递给函数。我试图纠正下面的问题,但我没有看到下载提示,而是将文件显示为文本。

jQuery.get("/return_file/",{"file":"c:/filename.xls"},function(data)
{
    jQuery(thisButton).children("iframe").attr("src",data);
});

关于我哪里出错的任何想法?

谢谢!

编辑:

我现在更改了所有内容,以便使用 POST 传递文件名返回从数据库中检索到的 ID 号,当附加到 URL 时会导致文件返回。因此/return_file/1/返回一个 id 为 1 的文件。

jQuery('#download').attr("src","http://localhost/return_file/1/");

其中“下载”是 iframe 的 ID。

必须有更好的方法来处理文件下载。有没有人有更好的方法的想法?

最佳答案

为什么不像以前使用不同构造的字符串那样使用 bob.read() 呢?看起来最简单!

关于jquery - Django/jQuery - 读取文件并作为文件下载提示传递给浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3041603/

相关文章:

html - 在 anchor 悬停时更改 li

javascript - jQuery - .load() 每个增量 ID(例如 : content1, content2 等)

javascript - 调整浏览器大小时同位素项目消失

jquery - 计算列表中选项的数量

python - 如何从 Python 中的方法启用字典的代码完成?

html - 垂直和水平居中无法按预期工作

javascript - 使用jquery获取rails中每个 block 中元素的动态id

python - 通过套接字发送pil图像而不保存python

python - Python 中的路径搜索

javascript - Bootstrap Datetimepicker 跨度中断