| | |
| | | import io |
| | | import time |
| | | from typing import Optional, List |
| | | |
| | | import requests |
| | |
| | | from app.models.user_model import UserModel |
| | | from app.service.basic import BasicService |
| | | from app.service.bisheng import BishengService |
| | | from app.service.files import read_file |
| | | from app.service.files import read_file, service_chat_message, generate_word_document |
| | | from app.service.v2.api_token import DfTokenDao |
| | | from app.service.difyService import DifyService |
| | | from app.service.ragflow import RagflowService |
| | |
| | | return Response(code=400, msg=str(e)) |
| | | try: |
| | | file_upload = await dify_service.upload(token, f.filename, file_content, current_user.id) |
| | | if not file_upload: |
| | | raise HTTPException(status_code=500, detail="上传文件出错") |
| | | try: |
| | | tokens = await read_file(file_content, f.filename, f.content_type) |
| | | file_upload["tokens"] = tokens |
| | |
| | | break |
| | | yield data |
| | | |
| | | return StreamingResponse(generate(), media_type="application/octet-stream") |
| | | return StreamingResponse(generate(), media_type="application/octet-stream") |
| | | |
| | | |
| | | @router.get("/message/{message_id}/download", response_model=Response) |
| | | async def chat_message_generate_docx(message_id: str, db=Depends(get_db)): |
| | | title, content = await service_chat_message(db, message_id) |
| | | if title: |
| | | print(title) |
| | | # 创建 Word 文档 |
| | | doc = await generate_word_document(title, content) |
| | | |
| | | # 保存到内存缓冲区 |
| | | buffer = io.BytesIO() |
| | | doc.save(buffer) |
| | | buffer.seek(0) |
| | | # print(2323232) |
| | | # 返回文件流 |
| | | return StreamingResponse(buffer, |
| | | media_type="application/vnd.openxmlformats-officedocument.wordprocessingml.document", |
| | | headers={"Content-Disposition": f"attachment; filename={int(time.time()*1000)}.docx"}) |
| | | raise HTTPException(status_code=400, detail="Failed to generate Word document") |