摘要:

   最近项目中出现上传文件返回的json数据会被提示下载,只有在ie10+中才会出现这个问题。前端使用jQuery的插件ajaxForm提交表单,后台返回的数据格式为json。代码如下:

后端Python:

defjsonp(func):"""Wraps JSONified output for JSONP requests."""@wraps(func)def decorated_function(*args, **kwargs):callback= request.args.get('callback', False)temp_content=  func(*args, **kwargs)ifisinstance(temp_content, dict):temp_content.setdefault('success', True)temp_content.setdefault('code', 200)try:temp_content= json.dumps(temp_content, indent=4)exceptUnicodeDecodeError:try:temp_content=ujson.dumps(temp_content)exceptStandardError as e:logger.exception(e)temp_content= json.dumps({'success': False, 'code': 500, 'info': 'INVALID_CONTENT'})temp_content=cgi.escape(temp_content)ifcallback:#依据 http://evilcos.me/?p=425,jsonp添加/**/头部会安全一些content = '/**/' + str(callback) + '(' + temp_content + ')'mimetype= 'application/javascript'headers= {'charset':'utf-8'}return current_app.response_class(content, mimetype=mimetype,headers=headers)else:mimetype= 'application/json'headers= {'charset':'utf-8'}content=temp_contentreturn current_app.response_class(content, mimetype=mimetype,headers=headers)elifisinstance(temp_content, basestring):temp_content=cgi.escape(temp_content)returntemp_contentelse:returntemp_contentreturndecorated_function@mod.route('/patch/install.json', methods=['POST'])
@jsonpdefpatch_install():return {'data': 'data'}

前端js代码:

$('#form').ajaxSubmit({url      :'/patch/install.json',type     :'post',dataType :'json',iframe   :true,success:function(res) {//code
}
});

解决办法:

  需要将后端返回的数据格式改成text/html格式的,如下:

defplain(func):"""wrap text/html reponse"""@wraps(func)def _inner(*args, **kwargs):resp= func(*args, **kwargs)ifisinstance(resp, dict):resp.setdefault('success', True)resp.setdefault('code', 200)resp=json.dumps(resp)resp=cgi.escape(resp)return current_app.response_class(resp, mimetype='text/html', headers={'charset': 'utf-8'})elifisinstance(resp, basestring):resp=cgi.escape(resp)return current_app.response_class(resp, mimetype='text/html', headers={'charset': 'utf-8'})else:returnrespreturn_inner@mod.route('/patch/install.json', methods=['POST'])
@plaindefpatch_install():return {'data': 'data'}

注意:此例后端是用Python,如果项目中遇到同样问题,改成对应语言。

上传文件返回数据提示下载相关推荐

  1. linux ftp 550 下载,linux ftp服务器上传文件夹时提示550错误问题解决方法

    linux ftp服务器上传文件夹时提示550错误问题解决方法 标签: linux ftp服务器 550 中文文件夹上传错误 问题 分类: 计算机 2010-11-06 22:47 前几天在实验室搭配 ...

  2. 微信小程序云开发实现上传文件和预览下载文件

    微信小程序云开发实现上传文件和预览下载文件 一.前言 目前微信提供了一个接口 wx.chooseMessageFile 它能让用户从聊天记录里面选择一个或者多个文件,然后返回它的一些信息,列入文件的p ...

  3. cuteftp上传文件失败,提示权限失败

    记事: 通过cuteftp在服务器的linux上搭建gcc交叉编译工具链时,发现上传文件失败并且提示权限不足,于是百度得知新建的文件夹权限可能不足,于是通过""chmod 权限 文 ...

  4. $.messager.progress ajax,ajax异步上传文件返回undefined

    ajax跨域上传文件,封装了一个上传文件的方法sendFilePost,上传文件的时候使用async: false同步上传就不会弹出等待框,返回的结果没问题,但是使用了异步的方法async: ture ...

  5. 上传文件的加密和下载文件解密

    文件上传加密 在很多应用场景中,出于安全考虑,我们不得不实行上传文件时对文件进行加密, 存入服务器的文件就会变成二进制文件,当别人直接冲服务器拿到文件时,也无法查看,这就保证了安全性. 但是我们需要在 ...

  6. 上传文件至数据库并下载

    在FineReport中,会出现希望直接将txt.excel等文件整个保存在数据库中进行备份,并且希望通过FineReport制作报表将这些文件下载下来的情况. 上传:使用文件控件上传文件,以二进制流 ...

  7. linux 上传文件 rz命令 提示command not found 解决方法

    -bash: rz: command not found rz命令没找到? 执行sz,同样也没找到. 安装lrzsz: yum -y install lrzsz 现在就可以正常使用rz.sz命令上传. ...

  8. Laravel中使用uploadify 上传文件返回出现debugbar信息解决思路

    Laravel5.5源码详解 – Laravel-debugbar 及使用elementUI - ajax的注意事项 关于laravel对中间件的处理,请参中间件考另文,  Laravel5.5源码详 ...

  9. php curl上传文件返回false,php curl上传文件$_FILES为空的问题

    PHP 5.0~5.6 各版本兼容的cURL文件上传 最近做的一个需求,使用PHP cURL上传文件.踩坑若干,整理如下. 不同版本PHP之间cURL的区别 PHP的cURL支持通过给CURL_POS ...

最新文章

  1. C# QRCode 二维码
  2. 网页设计的12种颜色
  3. 【完整代码】Scala akka入门示例
  4. nginx对websocket的支持及uliweb chatroom的测试
  5. 湖北工程学院计算机宿舍,湖北工程学院宿舍条件,宿舍环境图片(10篇)
  6. .net MVC在服务端代码输出html字符串
  7. 大学学计算机用游戏本好吗,大学学建筑学用什么配置的笔记本电脑好?
  8. unix下ODBC连接MySQL编程_通过unixODBC访问PostgreSQL数据库
  9. 新浪财经三人行:专家谈萨班斯法案聊天实录
  10. 如何在没有原工程的情况下,利用vivado将bit文件转化成bin文件
  11. 联想笔记本修复计算机还原系统失败,联想笔记本电脑重装系统不成功,联想笔记本系统恢复...
  12. 世界上最好用的截图工具 吸色工具 Snipaste
  13. html <font>中英文常用字体和颜色总结
  14. centos7编写shell批处理文件和执行方法
  15. Buuctf rar
  16. Qt模仿网易云黑胶片转动动画
  17. vue注册了却没有使用的错误: component has been registered but not used
  18. html5视频播放器 知乎,6款让人赞不绝口的电脑软件,知乎超10W人推荐,建议悄悄收藏...
  19. JavaScript 学习笔记 - 12 JavaScript 应用示例
  20. awg线径与电流_AWG_线径电流

热门文章

  1. [转]使用HttpOnly提升Cookie安全性
  2. UVA 512 Spreadsheet Tracking
  3. Linux 关闭与重启
  4. SpringMVC Controller的返回类型
  5. 2015年07月04日
  6. Java实现二维码技术探讨。
  7. go中有缓存通道和无缓存通道区别
  8. 安装MongoDB(做成Windows服务)并加载C#驱动程序
  9. JS弹出窗口的运用与技巧(转)
  10. 【python】入门指南:控制语句