Commit 52fd8362 authored by mingyard's avatar mingyard

feat:流文件上传obs

parent dd15e79e
...@@ -85,6 +85,6 @@ export const app: AppConfig = { ...@@ -85,6 +85,6 @@ export const app: AppConfig = {
}, },
chatServer: { chatServer: {
endpoint: env.APP_CHAT_SERVER ?? 'http://localhost:3000', endpoint: env.CHAT_SERVER_URL ?? 'http://localhost:3000',
}, },
}; };
...@@ -169,11 +169,8 @@ export class TranslateController { ...@@ -169,11 +169,8 @@ export class TranslateController {
description: '成功返回翻译结果', description: '成功返回翻译结果',
}) })
@Auth() @Auth()
async getResult( async getResult(@Query() dto: TranslateProgressReqDto): Promise<any> {
@Query() dto: TranslateProgressReqDto, return await this.translateService.downloadImage(dto.taskId);
@Res() res: Response,
): Promise<any> {
return await this.translateService.downloadImage(dto.taskId, res);
} }
// text合成语音 // text合成语音
......
...@@ -11,7 +11,6 @@ import { BadRequestError } from '@/common/exception/badRequest/BadRequestError'; ...@@ -11,7 +11,6 @@ import { BadRequestError } from '@/common/exception/badRequest/BadRequestError';
import * as crypto from 'crypto'; import * as crypto from 'crypto';
import * as FormData from 'form-data'; import * as FormData from 'form-data';
import { TranslateImageReqDto } from './dto/req/translateImageReq.dto'; import { TranslateImageReqDto } from './dto/req/translateImageReq.dto';
import { Response } from 'express';
import axios, { AxiosResponse } from 'axios'; import axios, { AxiosResponse } from 'axios';
import { TTSDto } from './dto/baseDto'; import { TTSDto } from './dto/baseDto';
...@@ -170,7 +169,7 @@ export class TranslateService { ...@@ -170,7 +169,7 @@ export class TranslateService {
} }
// 下载翻译图片 // 下载翻译图片
async downloadImage(taskId: string, res: Response): Promise<any> { async downloadImage(taskId: string): Promise<any> {
const params = { const params = {
nonce_str: crypto.randomUUID(), nonce_str: crypto.randomUUID(),
tid: taskId, tid: taskId,
...@@ -200,36 +199,37 @@ export class TranslateService { ...@@ -200,36 +199,37 @@ export class TranslateService {
throw BadRequestError.default('下载翻译图片失败'); throw BadRequestError.default('下载翻译图片失败');
} }
// 设置响应头 // // 设置响应头
res.setHeader('Content-Type', 'image/jpeg'); // 根据实际文件类型设置 // res.setHeader('Content-Type', 'image/jpeg'); // 根据实际文件类型设置
res.setHeader('Content-Disposition', 'attachment; filename="image.jpg"'); // 设置下载文件名 // res.setHeader('Content-Disposition', 'attachment; filename="image.jpg"'); // 设置下载文件名
// 将文件流返回给前端 // // 将文件流返回给前端
response.data.pipe(res); // response.data.pipe(res);
// 上传图频到服务器 // 上传图频到服务器
// return await this.uploadStream(response.data); const result = await this.uploadStream(response.data);
return { url: `${config.obs.endpoint}/${result.filename}` };
} }
async uploadStream(stream) { async uploadStream(stream) {
const formData = new FormData(); const formData = new FormData();
formData.append('file', stream); formData.append('file', stream, { filename: 'image.jpg' });
const response = await axios.post( const response = await axios.post(
`${config.chatServer.endpoint}/upload/file`, `${config.chatServer.endpoint}/upload/file`,
formData, formData,
{ {
headers: { headers: {
'Content-Type': 'multipart/form-data', ...formData.getHeaders(),
}, },
}, },
); );
console.log('Upload successful:', response.data);
if (response.status !== 200) { if (response.status !== 200) {
throw BadRequestError.default('上传翻译图片失败'); throw BadRequestError.default('上传翻译图片失败');
} }
return response.data; return response.data.data;
} }
// tts 语音合成 // tts 语音合成
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment