Java是一门面标的目的对象编程说话,不仅接收了C++说话的各类长处,还摒弃了C++里难以理解的多担当、指针等概念,是以Java说话具有功能壮大和简单易用两个特征。Java说话作为静态面标的目的对象编程说话的代表,极好地实现了面标的目的对象理论,许可程序员以优雅的思维体例进行复杂的编程 。
Java具有简单性、面标的目的对象、分布式、健壮性、平安性、平台自力与可移植性、多线程、动态性等特点 。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等 。
第一步:借助于springmvc框架的平台实现。
1、参考:Ajax上传文件并显示进度条
1.1 前台按照原生的js实现异步上传功能。
2、springboot实现图片上传本家儿要也是借助于springboot+表单实现上传的功能
第二步:java网页下载功能怎么获取文件名。
下载可以参考:零丁介绍下载一般要如何操作
第三步:前端如何实现冲破预览结果。
1、参考经验:js如何显示图片
springboot默认是集当作springmvc,利用springboot和直接利用springmvc上传是一样的。
前端代码:
1、具体代码如下所示:
此处直接利用的表单同步提交。
<!DOCTYPE html>
<html>
<head>
<title>图片上传</title>
<meta name="keywords" content="keyword1,keyword2,keyword3"></meta>
<meta name="description" content="this is my page"></meta>
<meta name="content-type" content="text/html; charset=UTF-8"></meta>
</head>
<body>
<form enctype="multipart/form-data" method="post" action="/testUploadimg">
图片:<input type="file" name="file" /><br/>
<input type="submit" value="上传" />.
</form>
</body>
</html>
节制器UploadController 实现
UploadController 本家儿要分为3部门
1.1 调整页面请求goUploadImg
1.2 上传请求方式uploadImg
1.3 存储图片方式uploadFile
@Controllerpublic class UploadController {
//跳转到上传文件的页面
@RequestMapping(value = "/gouploadimg", method = RequestMethod.GET)
public String goUploadImg() {
//跳转到 templates 目次下的 uploadimg.html
return "uploadimg";
}
//处置文件上传
@ResponseBody //返回json数据
@RequestMapping(value = "/testUploadimg", method = RequestMethod.POST)
public String uploadImg(@RequestParam("file") MultipartFile file,
HttpServletRequest request) {
tring contentType = file.getContentType();
String fileName = file.getOriginalFilename();
String filePath = "D:/img";
if (file.isEmpty()) {
return "文件为空!";
}
try {
uploadFile(file.getBytes(), filePath, fileName);
} catch (Exception e) {
// TODO: handle exception
}
//返回json
return "上传当作功";
}
public static void uploadFile(byte[] file, String filePath, String fileName) throws Exception {
File targetFile = new File(filePath);
if (!targetFile.exists()) {
targetFile.mkdirs();
}
FileOutputStream out = new FileOutputStream(filePath +"/"+ fileName);
out.write(file);
out.flush();
out.close();
}
}
2:同时需要将上传图片的原始文件名和存储文件名、以及联系关系id存入一个数据表中。
2.1 将存储文件名设置为UUID,避免存储文件名反复
public static String getUUID(){
UUID uuid=UUID.randomUUID();
String str = uuid.toString();
String uuidStr=str.replace("-", "");
return uuidStr;
}
2.2 将存储文件名按照时候生当作,避免存储文件名反复
System.nanoTime()
该函数是返回纳秒的。1毫秒=1纳秒*1000*1000
如:long time1=System.nanoTime();
2.3 或者借助于SimpleDateFormat 将Date格局化到毫秒也可以解决文件重名的问题。
测试。
打开页面地址如下图所示:
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!