EasyExcel使用、base64 编码传输的问题、HttpRequestHelper使用

EasyExcel导出

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>2.1.1</version>
</dependency>
response.setContentType ("application/vnd.ms-excel");
response.setCharacterEncoding ("utf-8");
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
String fileName = URLEncoder.encode ("数据字典", "UTF-8");
response.setHeader ("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
List<DictEeVo> dictEeVos = query ().list ().stream ().map (dict -> {
    DictEeVo dictEeVo = new DictEeVo ();
    BeanUtils.copyProperties (dict, dictEeVo, DictEeVo.class);
    return dictEeVo;
}).collect (Collectors.toList ());

try {
    EasyExcel.write (response.getOutputStream (), DictEeVo.class).sheet ("数据字典").doWrite (dictEeVos);
} catch (IOException e) {
    throw new RuntimeException (e);
}
<div class="el-toolbar">
  <div class="el-toolbar-body" style="justify-content: flex-start;">
    <el-button type="text" @click="exportData"><i class="fa fa-plus"/> 导出</el-button>
  </div>
</div>
// 导出数据字典
exportData() {
  window.location.href="http://localhost:8202/admin/cmn/dict/exportData"
}

EasyExcel导入

监听器


// EasyExcel 的监视器
public class DictListener extends AnalysisEventListener<DictEeVo> {
    private IService service;
    /*
     * 存放数据的集合
     * */
    private List<Dict> dicts = new ArrayList<> ();

    public DictListener(IService service) {
        this.service = service;
    }


    //一行一行读取
    @Override
    public void invoke(DictEeVo dictEeVo, AnalysisContext analysisContext) {

        Dict dict = new Dict ();
        BeanUtils.copyProperties (dictEeVo, dict, Dict.class);
        // 添加到集合中,然后进行批量添加
        dicts.add (dict);
    }


    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        // 批量导入
        service.saveBatch (dicts);
    }
}



public void importDict(MultipartFile file) {

    try {
        // 读的结果封装为 DictEeVo
        EasyExcel.read (file.getInputStream (), DictEeVo.class, new DictListener (this)).sheet ().doRead ();
    } catch (IOException e) {
        throw new RuntimeException (e);
    }

}
<div class="el-toolbar">
  <div class="el-toolbar-body" style="justify-content: flex-start;">
    <el-button type="text" @click="exportData"><i class="fa fa-plus"/> 导出</el-button>
    <el-button type="text" @click="importData"><i class="fa fa-plus"/> 导入</el-button>
  </div>
</div>


<el-dialog title="上传文件" :visible.sync="dialogImportVisible" width="480px">
	<el-form label-position="right" label-width="170px">
	
	  <el-form-item label="文件">
	    <!--  action 提交的接口地址     -->
	    <!--  on-success 成功上传的方法   -->
	    <el-upload
	      :multiple="false"
	      :on-success="onUploadSuccess"
	      :action="'http://localhost:8202/admin/cmn/dict/importData'"
	      class="upload-demo"
	    >
	      <!--   上传的按钮  -->
	      <el-button size="small" type="primary">点击上传</el-button>
	      <div slot="tip" class="el-upload__tip">只能上传xls文件,且不超过500kb</div>
	    </el-upload>
	  </el-form-item>
	
	</el-form>

	<div slot="footer" class="dialog-footer">
	  <!-- 取消按钮 -->
	  <el-button @click="dialogImportVisible = false">取消</el-button>
	</div>

</el-dialog>

data() {
  return {
    list: [], // 数组字典列表
    dialogImportVisible: false, // 对话框是否展示
    listLoading: true

  }
}
// 导入数据
importData() {
  // 显示上传文件 对话框
  this.dialogImportVisible = true
},
//上传成功
onUploadSuccess(response, file) {
  this.$message.info('上传成功')
  // 关闭弹框
  this.dialogImportVisible = false
  // 刷新页面
  this.getDictList(1)
}

HttpRequestHelper

使用HttpRequestHelper发送请求,如果传入的数据是Json,需要JSONObject转换为 Json对象

JSONObject jsonObject = JSONObject.parseObject (data);
// 将请求参数封装为 map
Map<String, Object> paramMap = new HashMap<> ();
paramMap.put ("logoData", jsonObject.getString ("logoData"));
// 如果 获取的值还是json字符串,再次解析即可
JSONObject bookingRule = jsonObject.getJSONObject ("bookingRule");
paramMap.put ("bookingRule", bookingRule.toJSONString ());
// 发送请求,响应结果为JSONObject ,请求方式为Post
JSONObject respone = HttpRequestHelper.sendRequest (paramMap, this.getApiUrl () + "/api/hosp/saveHospital");

@PostMapping("saveHospital")
public Result saveHospital(HttpServletRequest request) {
	// 解析 请求参数
	Map<String, Object> paramMap = HttpRequestHelper.switchMap (request.getParameterMap ());
	// 可以 将数据解析为 字符串,然后转为对象
	String mapString = JSONObject.toJSONString (paramMap);
    Hospital hospital = JSONObject.parseObject (mapString, Hospital.class);

	
	return Result.ok ();
}

base64 编码传输的问题

// 传输过程中“+”转换为了“ ”,因此我们要转换回来
String logoDataString = (String) paramMap.get ("logoData");

if (!StringUtils.isEmpty (logoDataString)) {
    String logoData = logoDataString.replaceAll (" ", "+");
    paramMap.put ("logoData", logoData);
}

将一下的XXXXXX替换为加密的值即可

<img src="data:image/png;base64,XXXXXX"/>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值