100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > mimemultipart java_H5提交MIME类型为multipart/form-data类型的表单 后端如何处理(比如java .NET)?...

mimemultipart java_H5提交MIME类型为multipart/form-data类型的表单 后端如何处理(比如java .NET)?...

时间:2021-09-05 09:57:11

相关推荐

mimemultipart java_H5提交MIME类型为multipart/form-data类型的表单 后端如何处理(比如java .NET)?...

桃花长相依

/**

* 上传图片接口,任务详情的插图和评论的插图都用

*

* @param request

* @param taskId

* @param taskDiscussId

* @return

*/

@RequestMapping(value = "tasks/{taskId}/files", method = RequestMethod.POST)

public Results uploadFiles(HttpServletRequest request, @PathVariable Integer taskId,

Integer taskDiscussId) {

Results r = new Results();

r.setCode(StatusCode.OK);

try {

// 上传图片处理

CommonsMultipartResolver multipartResolver =

new CommonsMultipartResolver(request.getSession().getServletContext());

if (!multipartResolver.isMultipart(request)) {

r.setCode(StatusCode.FAIL);

r.setMessage("没有接收到文件,请重新选择!");

return r;

}

// 将请求还原成文件上传请求

MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;

MultipartFile mf = multipartRequest.getFile("file");

// 验证文件后缀是否正确

if (!FileFormatUtil.checkFileFormat(mf.getOriginalFilename(), FileFormat.IMAGE)) {

HugeServerException.throwException("用户上传头像格式错误", StatusCode.USER_IMG_FOR_ERROR);

}

// 这里是上传文件,返回保存的路径

String savePath = null;

// 前台有传评论ID的话,那就是上传评论的插图(目前只有上传图片,无其他格式文件)

if (taskDiscussId == null) {

savePath = UploadFileUtils.uploadFile(request, mf, ConfigParam.task_attach);

TaskFile file = new TaskFile();

file.setTaskId(taskId);

file.setFileType(FileType.IMAGE.getValue());

file.setFileName(mf.getName());

file.setFilePath(savePath);

taskFileService.insert(file);

}

else {

savePath = UploadFileUtils.uploadFile(request, mf, ConfigParam.task_discuss_attach);

TaskDiscussFile file = new TaskDiscussFile();

file.setTaskDiscussId(taskDiscussId);

file.setFileType(FileType.IMAGE.getValue());

file.setFileName(mf.getName());

file.setFilePath(savePath);

taskDiscussFileService.insert(file);

}

r.setData(savePath);

}

catch (Exception e) {

log.error("File upload failed.", e);

r.setCode(StatusCode.TASK_FILE_UPLOAD_FAIL);

r.setMessage("任务文件上传失败!");

}

return r;

}

public class UploadFileUtils extends BaseFile{

public static String getNewFileName(String suffix){

if(StringUtils.isEmpty(suffix)){

return null;

}

return new Date().getTime()+UNDERLINE+(new Random().nextInt(100000000)+1)+POINT+suffix;

}

public static String uploadFile(HttpServletRequest request,MultipartFile file, String fileSavePath) throws Exception{

if(file == null){

return "";

}

String originalFilename = file.getOriginalFilename();

if(StringUtils.isBlank(originalFilename)){

return "";

}

//boolean isr = FileFormatUtil.checkFileFormat(originalFilename, fileFormat);

/*if(!isr){

throw new HugeFileException("上传文件格式错误,请重试");

}*/

//物理路径

String wlPath = getFullPath(request,fileSavePath);

File f = new File(wlPath);

if(!f.exists()){

f.mkdirs();

}

//获取后缀名

String suffix = FileUtils.getFileSuffix(originalFilename);

//通过后缀名,获取新的一个文件名

String newFileName = getNewFileName(suffix);

wlPath = wlPath+SPRIT+newFileName;

//这个参数是为了保存到数据库中的值

String ljPath = fileSavePath +SPRIT+newFileName;

//保存文件

copy(file.getInputStream(), wlPath);

//file.transferTo(new File(f.getAbsolutePath(),newFileName));

return ljPath;

}

private static void copy(InputStream fis, String newPath) throws Exception{

FileOutputStream fos =null;

try {

fos = new FileOutputStream(newPath);

byte[] buffer = new byte[1024];

int len = 0;

while ((len = fis.read(buffer)) > 0) {

fos.write(buffer, 0, len);

}

} catch (Exception e) {

e.printStackTrace();

throw new Exception("保存失败");

}finally {

try {

fis.close();

fos.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

throw new Exception("保存失败");

}

}

}

public static String getFullPath(HttpServletRequest request,String filePath){

return ConfigParam.path_absolute+filePath;

//return request.getSession().getServletContext().getRealPath(fileConfig);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。