前端
javascript
async function getpath(path){
try{
const response = await fetch('http://127.0.0.1:8080/getDownUrl/',{
method : 'POST',
headers: {
'Content-Type' : 'application/json',
},
body:JSON.stringify({path:path})
});
if (!response.ok){
showError('请求路径异常,请稍后重试!');
}
const data = await response.json();
return data;
}catch(error){
showError('请求路径异常:${error.message}');
throw error;
}
}
//监听上传请求完成
xhr.addEventListener('load',()=>{
if (xhr.status === 200){
const res = JSON.parse(xhr.responseText);
//这里DOWNLOAD_FILE_URL,后续改为服务器配置,前端仅传入path给后端,避免被攻击的风险。
const path = res.Result.Path;
getapath(path)
.then(result =>{
console.log('获取到的数据:',result);
const d_url = result.content;
// 传输完成后,更新为待处理字样
updateProgress(attachment.id, DICT.UPLOAD_COMPLETED);
// 将文件路径记录在对应的input里面
let tempInput = document.getElementById(attachment.id);
tempInput.value = d_url;
// 上传完成后 校验 激活 开始处理按钮
validFileList();
})
.catch(error =>{
console.log('操作失败请重试',error);
});
}else{
showError('转写失败,请重试');
}
});
后端
python
calss GetDownUrl(BaseModel):
path:str
@app.post('/getDownUrl/')
async def get_down_url(request:GetDownUrl):
"""获取下载路径"""
path = request.path
try:
if path:
down_url = f'{DOWN_URL_IP}/api/true&Path={Path}'
else:
return {'status':1,"content":'',"error_msg":""}
except Exception as e:
error_msg = f"传入path错误: {str(e)}"
logger.error(error_msg)
return {'status':0,"content":'',"error_msg":error_msg}