上传文件java后台获取为空_java图片上传,通过MultipartFile方式,如果后台获取null检查是否缺少步骤...

本方法基于springMvc

1.首先需要在webap下创建images

2.在springmvc.xml上引入

3.配置web.xml过滤器

4.后台代码

import org.springframework.web.multipart.MultipartFile;

@RequestMapping(value = "/uploadImg", method = RequestMethod.POST)

@ResponseBody

@ApiOperation(value = "图片上传", httpMethod = "POST", notes = "返回图片存放服务器路径")

public ReponseResult uploadImg(@RequestParam(value="file",required=false)MultipartFile uploadFile,HttpServletRequest request) {

String imgurl=null;// 文件路径

String trueFileName=null;// 自定义的文件名称

if (uploadFile!=null) {// 判断上传的文件是否为空

String type=null;// 文件类型

String fileName=uploadFile.getOriginalFilename();// 文件原名称

System.out.println("上传的文件原名称:"+fileName);

// 判断文件类型

type=fileName.indexOf(".")!=-1?fileName.substring(fileName.lastIndexOf(".")+1, fileName.length()):null;

if (type!=null) {// 判断文件类型是否为空

if ("GIF".equals(type.toUpperCase())||"PNG".equals(type.toUpperCase())||"JPG".equals(type.toUpperCase())) {

// 项目在容器中实际发布运行的根路径

// String realPath="E:\\apache-tomcat-8.5.40\\apache-tomcat-8.5.40\\webapps\\imgs\\";

//图片存放的路径,可写在本地硬盘,也可放在服务器上

//----------------------------本实例在服务器镜像映射的地址----------------------------------------------

String realPath="/usr/local/tomcat/webapps/项目名称/images/";

//自定义的文件名称

trueFileName=String.valueOf(System.currentTimeMillis())+fileName;

//设置存放图片文件的路径

imgurl=realPath+/*System.getProperty("file.separator")+*/trueFileName;

System.out.println("存放图片文件的路径:"+imgurl);

// 转存文件到指定的路径

try {

uploadFile.transferTo(new File(imgurl));

} catch (IllegalStateException e) {

logger.error(e.toString());

e.printStackTrace();

} catch (IOException e) {

logger.error(e.toString());

e.printStackTrace();

}

System.out.println("文件成功上传到指定目录下");

}else {

System.out.println("不是我们想要的文件类型,请按要求重新上传");

return ReponseResult.error(new CodeMsg(-1, "文件类型不符"));

}

}else {

System.out.println("文件类型为空");

return ReponseResult.error(new CodeMsg(-1, "文件类型为空"));

}

}else {

System.out.println("没有找到相对应的文件");

return ReponseResult.error(new CodeMsg(-1, "没有找到相对应的文件"));

}

//TODO 线上图片存放路径需要修改

//测试地址--------------------------------------------------------------------------

String returnUrl = "http://服务器地址/项目名称/images/"+trueFileName;

//测试地址--------------------------------------------------------------------------

return ReponseResult.success(returnUrl);

}

Java中,当你需要将用户上传文件(MultipartFile)发送到服务器上,并随后对文件内容进行解析,可以按照以下步骤操作: 1. **上传文件至服务器**: ```java import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.support.StandardMultipartHttpServletRequest; public void uploadFile(StandardMultipartHttpServletRequest request) { String fileName = request.getFile("file").getOriginalFilename(); // 获取文件名 try { MultipartFile file = request.getFile("file"); // 获取上传文件 // 检查文件是否有效并且未超过最大限制 if (!file.isEmpty() && isValidFileSize(file)) { // 将文件移动到服务器指定目录 moveUploadedFileToServer(file, "uploads/" + fileName); } else { throw new IllegalArgumentException("Invalid file or exceeds size limit"); } } catch (Exception e) { log.error("Error uploading file", e); } } private boolean isValidFileSize(MultipartFile file) { // 根据需求检查文件大小,比如小于5MB long maxSize = 5 * 1024 * 1024; // 5 MB return file.getSize() <= maxSize; } private void moveUploadedFileToServer(MultipartFile file, String destinationPath) { try { file.transferTo(new File(destinationPath)); // 保存到服务器文件系统 } catch (IOException e) { throw new RuntimeException("Failed to save file", e); } } ``` 2. **解析文件内容**: ```java import org.springframework.core.io.InputStreamResource; import com.fasterxml.jackson.databind.ObjectMapper; public Object parseFileContent(String filePath) { ObjectMapper mapper = new ObjectMapper(); InputStreamResource resource = new InputStreamResource(new FileInputStream(filePath)); try { // 使用Jackson或其他JSON库解析文件内容 return mapper.readValue(resource.getInputStream(), YourDataType.class); // 假设YourDataType是你想要反序列化的对象类型 } catch (IOException e) { log.error("Error parsing file content", e); return null; } } ``` 在这个例子中,`YourDataType`需要替换为你实际的数据模型类。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值