flask_返回字节流错误

# flask_返回字节流错误

def export_data(filename, fields, data, names=None, sheet=‘Sheet1‘):
    # fields 为list data为dict

    fp = io.BytesIO()
    book = xlsxwriter.Workbook(fp, {‘in_memory‘: True})
    worksheet = book.add_worksheet(sheet)
    # 表头格式
    format1 = book.add_format(
        {‘bold‘: True, ‘font_color‘: ‘black‘, ‘font_size‘: 13, ‘align‘: ‘left‘, ‘font_name‘: u‘宋体‘})
    # 表头外格式
    format2 = book.add_format({‘font_color‘: ‘black‘, ‘font_size‘: 9, ‘align‘: ‘left‘, ‘font_name‘: u‘宋体‘})
    # A列列宽设置能更好的显示
    worksheet.set_column("A:F", 20)
    # book = xlwt.Workbook()
    # worksheet = book.add_sheet(‘Sheet1‘)  # 创建一个sheet
    # 插入第一行表头标题
    if names:
        for i in range(0, len(names)):
            name = names[i]
            worksheet.write(0, i, name, format1)
    else:
        for i in range(0, len(fields)):
            field = fields[i]
            worksheet.write(0, i, field, format2)
    # 从第二行开始插入数据
    for i in range(len(data)):
        item = data[i]
        for j in range(len(fields)):
            field = fields[j]
            worksheet.write(i + 1, j, item[field])
    book.close()
    # fp.seek(0)

    # print(filename,‘////////////////////‘)
    name = parse.quote(filename)
    # print(fp.getvalue(),‘-------------------‘)
    # rv = send_file(send_file(fp, attachment_filename=‘%s.xlsx‘ % name, as_attachment=True))
    rv = make_response(fp.getvalue())
    # 特别注意,必须加这一行
    fp.close()
    mime_type = mimetypes.guess_type(‘%s.xlsx‘ % name)[0]
    rv.headers[‘Content-Type‘] = mime_type
    rv.headers["Cache-Control"] = "no-cache"
    rv.headers[‘Content-Disposition‘] = ‘attachment; filename={}.xlsx‘.format(name)

    return rv

# 报错信息:
"""
io.UnsupportedOperation: fileno
....

/python3.6/site-packages/werkzeug/wsgi.py", line 893, in wrap_file
    return environ.get(‘wsgi.file_wrapper‘, FileWrapper)(file, buffer_size)
SystemError: <built-in function uwsgi_sendfile> returned a result with an error set

原因:BytesIo未关闭,加上fp.close就行了
"""

原文地址:https://www.cnblogs.com/lajiao/p/9993790.html

时间: 2024-11-13 07:58:02

flask_返回字节流错误的相关文章

Socket进程处理被中断的系统调用及Accept函数返回EINTR错误处理

我们用慢系统调用来描写叙述那些可能永远阻塞的系统调用(函数调用),如:accept.read等.永远阻塞的系统调用是指调用有可能永远无法返回.多数网络支持函数都属于这一类.比如,假设没有客户连接到server上,则server对accept的调用就没有返回保证.类似的.假设客户从未发送过一行要求server回射的文本.则server对read的调用将永不返回.其它慢系统调用的样例是对管道和终端设备的读写. 有一个例外,就是磁盘IO.他一般都返回调用者. 当一个进程阻塞与慢系统调用时捕获到一个信号

子进程 已安装 pre-removal 脚本 返回了错误号 1或2 与 子进程 已安装 post-installation 脚本 返回了错误号 1或2

今天在ubuntu kylin上安装了virtualbox, 后来我想删除了再装个新一点的,结果正常的情况下删除不了,我就把找到的virtualbox的目录全部都删除了, 再通过apt-get remove等命令就删除不了了,出现标题所示的错误 子进程 已安装 pre-removal 脚本 返回了错误号 1 在网上找了一圈,费了好大的劲才找到以下的解决方案,记录一下, http://www.xuebuyuan.com/2153374.html sudo gedit /var/lib/dpkg/s

使用spring webflow,在前台页面中如何显示后端返回的错误信息

刚刚接触spring webflow,相关的资料并不是很多,并且大都是那种入门的 .xml文件的配置. 用到的CAS 最新的4.0版本用的就是web-flow流,前台页面使用的是表单提交.于是我就碰到了一个问题,问题描述如下: 第一次输入错误的用户名密码提示用户名密码错误,第二次输入了正确的用户名和密码仍然报错,校验不通过. 在使用cas之前的登录页面如果输入用户名和密码错误的话,会弹出alert提示框,这个是使用ajax请求实现的.而ajax请求的一般都是那种spring mvc的contro

AE开发中,对 COM 组件的调用返回了错误 HRESULT E_FAIL,在地理处理中,即GP工具处理时出错

ArcgisEngine二次开发中,进行地理处理,即:相交操作,交集取反操作,擦除操作等过程中,如果权限分配不当,就会出现上面对 COM 组件的调用返回了错误 HRESULT E_FAIL 的错误 原因如下:在进行擦除,交集取反等高级操作时,必须是ArcgisInfo级别的许可授权,否则无法进行操作,而相交操作用ArcgisEngine级别即可.(不稳定,会出错,建议2) 解决如下:1.如何使用licenceControl控件选择ArcgisInfo选项即可,同时选中其中的Spatial Ana

源码编译安装 PHP5.5.0,解决curl_exec访问HTTPS返回502错误的问题

最近碰到一个奇怪的问题, PHP使用 curl_exec 访问 HTTPS 网页时, 返回502错误, 访问HTTP网页时没有问题,  用   echo   phpinfo() ;  查看, 支持openssl, 支持curl, 网上找了好多资料, 都没解决. [[email protected] ~]# php -V Failed loading /usr/local/zend/ZendOptimizer.so: /usr/local/zend/ZendOptimizer.so: undefi

Bug记录:微博的Java SDK返回经纬度错误

现象:美国的坐标点可能会定位到西藏地区-后发现原来负经度经解析后,均变成正的! 源代码: private void getGeoInfo(String geo) { StringBuffer value= new StringBuffer(); for(char c:geo.toCharArray()){ if(c>45&&c<58){ value.append(c); } if(c==44){ if(value.length()>0){ latitude=Double.

Ext JS 5 关于Store load返回json错误信息或异常的处理

关于在store load的时候服务器返回错误信息或服务器出错的处理.ExtJS4应该也能用,没测试过. 这里有两种情况: 服务器返回错误json错误信息,状态为200 服务器异常,状态为500 一.返回json错误信息的处理 在store获取json数据时,数据结构类似: { "users": [{ "id": 1, "name": "Ed", "orders": [{ "id": 1

源码编译安装 PHP5.5.0,解决curl_exec访问HTTPS返回502错误的问题(修改PATH路径)

最近碰到一个奇怪的问题, PHP使用 curl_exec 访问 HTTPS 网页时, 返回502错误, 访问HTTP网页时没有问题,  用   echo   phpinfo() ;  查看, 支持openssl, 支持curl, 网上找了好多资料, 都没解决. [plain] view plain copy [[email protected] ~]# php -V Failed loading /usr/local/zend/ZendOptimizer.so:  /usr/local/zend

给Apache加载rewrite模块后,服务器返回500错误,以及a2enmod命令

我的机子是Ubuntu. 今天想给url做一个rewrite,让url看起来更漂亮一点.在Apache配置文件(我的是 /etc/apache/apache2.conf)文件中已经把AllOverride 指定为All.并且在.htaccess文件里写了如下rewrite规则: RewriteEngine on RewriteRule ^index http://www.baidu.com 重启Apache后,服务器返回500错误,令我很不解. 后来在 http://www.blogguy.cn