前端提交表单至后端,经python执行返回png图片,前端显示回传图片

                    <el-form-item>
                        <el-button type="primary" @click="onSubmit">确定</el-button>
                        <el-button>取消</el-button>
                    </el-form-item>

点击确定键,将表单form参数,这里我以传入时间参数为例,传入后端,然后后端图片回传。

import dayjs from 'dayjs';
import { getImg } from "../api/index";

methods: {
    onSubmit() {
         starttime=this.ruleForm.publishDate   //form表单参数:v-model
         endtime = this.ruleForm.offlineDate   //form表单参数:v-model
 //dayjs(**).format("YYYY-MM-DD HH:mm:ss") 
 //**为格林威治时间,如:Sat Dec 04 2021 00:00:00 GMT+0800 (中国标准时间)
 //用dayjs插件,转化成年月日时分秒; 如:2021-12-04 00:00:00

         const query = {starttime,endtime};
         getImg(query).then(res => {
             console.log(res); 
             const srcs = window.URL.createObjectURL(res);
             this.imgSrc = srcs ;
         }); 
     }
     

    }

vue/cli4,用api模块实现axios,路径:src-api-index.js

export const getImg = query => {
    return request({
        url:'/api/getpng/',
        method :'post',
        data :query,
        responseType:'blob',
    })
}

我这里是使用blob类型去展示图片,因为觉得方便,后端传过来就是blob

def getpng(request):
    if request.method == "POST":
        req=request.body
        requ=req.decode()
        res=json.loads(requ, strict=False)
        start=res['starttime']
        end=res['endtime']
        print(start)
        print(end)
        path="D:/5Glog.png"
        file=open(path,"rb")
        return HttpResponse(file.read(),content_type="image/png")

控制台收到的是: 

 对收到的blob,使用一句js就可以:

const srcs = window.URL.createObjectURL(res); 

页面上插入img:

<img :src="imgSrc">  

最终完成图片回显。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值