51Testing软件测试论坛
标题: 多图片文件上传实现并通过 PostMan 测试 [打印本页]
作者: 马琰的春天 时间: 2019-1-28 14:45
标题: 多图片文件上传实现并通过 PostMan 测试
项目的框架是springCloud 的一个服务,图片上传实际上就是用java的IO 流进行读写文件,给后台传递一个路径,后台通过浏览器链接到前端,将前端的图片数据拷贝的服务器的存储地址。
1. 服务端保存图片的地址:
application.yml 文件中添加如下配置:
- img:
- location: E:\hjy\workspace\wx-back-web\src\main\webapp\olimg\
复制代码2、有关文件上传实现
.Controller 中获取路径的
- import org.springframework.beans.factory.annotation.Value;
- @Value("${img.location}")
- private String location;
复制代码 Controller 中的方法:
- import org.springframework.web.bind.annotation.PathVariable;
- @RequestMapping("/uploadImg/{imgType}")
- public String uploadImg(
- @RequestParam("ediormd-image-file") MultipartFile[] files,@PathVariable("imgType") String imgType) {
- ResponseData res = new ResponseData();
- List<ProductPic> proPicList = new ArrayList<ProductPic> ();
- String filePath = location + imgType +"/";
- try {
- if(files != null && files.length >0){
- for( int i=0;i<files.length;i++){
- ProductPic proPic = new ProductPic();
- MultipartFile file = files[i];
- String contentType = file.getContentType();
- String fileName = file.getOriginalFilename();
- System.out.println("fileName-->" + fileName);
- System.out.println("getContentType-->" + contentType);
- String resfileNewName = FileUtil.uploadFile(file.getBytes(), filePath, fileName);
- proPic.setPicUrl(filePath +resfileNewName);
- if(imgType.equals("list")){
- proPic.setPicName("列表图");
- }else if("caro".equals(imgType)){
- proPic.setPicName("轮播图");
- }else if("intr".equals(imgType)){
- proPic.setPicName("介绍图");
- }else if("thum".equals(imgType)){
- proPic.setPicName("缩略图");
- }
- proPicList.add(proPic);
- }
- }
- res.setCode(Constant.SUCCESS_CODE);
- res.setResult(proPicList);
- res.setMessage(Constant.SUCCESS_MSG);
- } catch (IOException e) {
- e.printStackTrace();
- res.setCode(Constant.FAIL_CODE);
- res.setMessage(Constant.FAIL_MSG);
- } catch (Exception e) {
- e.printStackTrace();
- res.setCode(Constant.FAIL_CODE);
- res.setMessage(Constant.FAIL_MSG);
- }
- JSONObject rdJson = JSONObject.fromObject(res);
- return rdJson.toString();
- }
复制代码辅助类ResponseData
- public class ResponseData {
- private Object result; // 返回结果
- private Object baseResult;// 基础信息返回结果
- private String code; // 返回code
- private String message; // 返回提醒消息
- public Object getResult() {
- return result;
- }
- public void setResult(Object result) {
- this.result = result;
- }
- public Object getBaseResult() {
- return baseResult;
- }
- public void setBaseResult(Object baseResult) {
- this.baseResult = baseResult;
- }
- public String getCode() {
- return code;
- }
- public void setCode(String code) {
- this.code = code;
- }
- public String getMessage() {
- return message;
- }
- public void setMessage(String message) {
- this.message = message;
- }
- }
复制代码文件上传服务类:
- public class FileUtil {
- /**
- * 上传文件并返回文件的名字
- * @param file
- * @param filePath
- * @param fileName
- * @return
- * @throws Exception
- */
- public static String uploadFile(byte[] file,String filePath,String fileName) throws Exception{
- String time = DateHelper.formatDate(new Date(), "yyMMddHHssmm");
- fileName = time +"_" +fileName ;
- File targetFile = new File(filePath);
- if(!targetFile.exists()){
- targetFile.mkdir();
- }
-
- FileOutputStream out = new FileOutputStream(filePath + fileName);
- out.write(file);
- out.flush();
- out.close();
-
- return fileName;
- }
- }
复制代码3. 通过PostMan 测试
安装如下图红色标注的,就可以实现对图片上传的测试,
[attach]121376[/attach]
作者: gengwhs 时间: 2019-5-18 09:46
后台接收多张图片的时候长度总是为0,一张图片没问题。
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) |
Powered by Discuz! X3.2 |