python后端代码_Python生成并下载文件后端代码实例

本文介绍如何使用Python Flask框架实现文件下载接口,包括TXT和Excel文件的生成与下载,并提供了前后端分离时需要注意的headers设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

txt文件

生成并下载txt文件:

@app.route('/download', methods=['GET'])

def download():

content = "long text"

response = make_response(content)

response.headers["Content-Disposition"] = "attachment;

filename=myfilename.txt"

return response

运行app.py后,在浏览器中输入:http://127.0.0.1:5000/download,直接下载txt文件。

excel 文件

生成并下载excel 文件:

@app.route("/export",methods = ['GET'])

def export():

out = BytesIO()

workbook = xlsxwriter.Workbook(out)

table = workbook.add_worksheet()

table.write(0, 0, "第1列")

table.write(0, 1, "第2列")

table.write(0, 2, "第3列")

table.write(0, 0, "name")

table.write(1, 1, "sex")

table.write(2, 2, "class")

workbook.close()

out.seek(0)

filename = quote("Entity类下载.xlsx")

rv = send_file(out, as_attachment=True, attachment_filename=filename)

rv.headers['Content-Disposition'] += "; filename*=utf-8''{}".format(filename)

return rv

运行app.py后,在浏览器中输入:http://127.0.0.1:5000/export,可以直接下载excel文件。

前后端分离时,接口返回时要注意headers

def exportExcel():

workbook = xlwt.Workbook(encoding='utf-8')

wSheet = workbook.add_sheet("Plan")

titleFont = xlwt.Font()

f = BytesIO()

workbook.save(f)

f.seek(0)

filename = quote(saveFile) # 将单个字符串编码转化为 %xx%xx 的形式

rv = send_file(f, as_attachment=True, attachment_filename=filename)

rv.headers['Content-Disposition'] += "; filename*=utf-8''{}".format(filename)

rv.headers['Cache-Control'] = 'no-store' # 重点在这句!!!!!!!!!!!!!!!!!

return rv

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持聚米学院。

### Python后端生成Word文档的方法及库推荐 在Python中,可以通过多种方法和库实现Word文档的生成功能。以下是几种常用的方式及其特点: #### 方法一:使用 `python-docx` 库 `python-docx` 是一个专门用于操作 Word 文档的强大工具[^1]。它可以轻松创建、读取和修改 `.docx` 文件的内容。以下是一个简单的代码示例展示如何使用该库生成一个新的 Word 文档写入内容。 ```python from docx import Document def create_word_document(filename, content): document = Document() document.add_heading('Document Title', level=1) document.add_paragraph(content) document.save(filename) create_word_document("example.docx", "This is a sample paragraph.") ``` 上述代码生成一个名为 `example.docx` 的文件在其内部添加标题以及一段文字内容。 --- #### 方法二:基于模板生成复杂文档 如果需要更复杂的布局或者样式控制,可以先设计好一份基础模板(`.dotx` 或者 `.docx`),再利用 `python-docx` 对其进行填充。这种方法特别适合批量生产带有固定格式的报告或合同书等场景[^3]。 例如,在已有模板的基础上替换占位符变量: ```python from docx import Document def fill_template(template_path, output_path, placeholders): doc = Document(template_path) for paragraph in doc.paragraphs: for key, value in placeholders.items(): if key in paragraph.text: paragraph.text = paragraph.text.replace(key, str(value)) doc.save(output_path) fill_template( template_path="template.docx", output_path="output.docx", placeholders={"{{name}}": "John Doe", "{{date}}": "2023-10-01"} ) ``` 此脚本将遍历整个文档中的所有段落寻找指定的关键字标记(如 `{{name}}` 和 `{{date}}`) 将其替换成实际的数据值。 --- #### 方法三:集成在线编辑器支持实时协作 对于某些应用场景可能还需要考虑多人同时访问同一个文档的需求,则可通过引入外部服务完成这一目标。比如结合 OnlyOffice 提供的功能强大的云端办公套件解决方案[^4]。在这种情况下不仅限于单纯地导出静态 .docx 文件而是构建起一套完整的前后端交互体系允许用户直接上传/下载甚至在线预览编辑他们的作品。 后端部分主要负责处理业务逻辑包括但不限于身份验证机制、权限管理策略以及最终产物持久化存储等方面的工作;而前端则侧重界面渲染呈现给终端使用者友好的体验效果。 下面给出了一段简化版 Vue.js 前端调用 Python 后端 API 创建新空白文档实例片段作为参考说明之一种可能性方式: ```javascript import axios from 'axios'; async function createNewDoc() { const response = await axios.post('/api/create_doc'); console.log(response.data); // {key: 'unique_key_for_new_doc'} } ``` 对应的服务器侧路由定义如下所示(假设采用 Flask 框架): ```python @app.route("/api/create_doc", methods=["POST"]) def create_doc(): unique_key = generate_unique_id() save_to_database(unique_key) return {"key": unique_key}, 200 ``` 以上仅展示了最基础框架搭建思路具体细节还需依据实际情况进一步完善调整优化性能表现等等因素综合考量之后才能得出最佳实践方案. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值