发表于: 2017-11-28 22:59:57
1 680
今日完成的事情:
今天完成了图片的上传功能:
图片上传首先要导入依赖:
<!-- 上传图片所需依赖 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
然后再springMVC中进行配置:
<!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="UTF-8"/>
<!-- 指定所上传文件的总大小不能超过500KB。注意maxUploadSize属性的限制不是针对单个文件,
而是所有文件的容量之和。这个的大小是以字节为单位的,要多大自己算好了再设置-->
<!-- 测试用,大小限制在5M -->
<property name="maxUploadSize" value="5000000"/>
<!-- 最大内存大小 (10240)-->
<property name="maxInMemorySize" value="40960" />
</bean>
然后是jsp页面,在这里我找到一篇比较好的教程:
https://www.cnblogs.com/fjsnail/p/3491033.html
这篇教程详细的介绍了图片上传的三种方式。
然后是我的jsp页面:
<form action="${ctx}/upload1" method="POST" enctype="multipart/form-data">
<h3>采用流的方式上传文件</h3>
图片上传:<input type=file name="file">
<input type="submit" value="提交">
</form>
<form action="${ctx}/upload2" method="POST" enctype="multipart/form-data">
<h3>采用multipart提供的file.transfer方法上传文件</h3>
图片上传:<input type=file name="file">
<input type="submit" value="提交">
</form>
<form action="${ctx}/upload3" method="POST" enctype="multipart/form-data">
<h3>使用spring mvc提供的类的方法上传文件</h3>
图片上传:<input type=file name="file">
<input type="submit" value="提交">
</form>
和控制器:
//采用file.Transto 来保存上传的文件
@RequestMapping(value = "/upload2",method = RequestMethod.POST)
@ResponseBody
public String fileUpload2(@RequestParam("file") CommonsMultipartFile file) throws IOException {
long startTime=System.currentTimeMillis();
System.out.println("fileName:"+file.getOriginalFilename());
String path="C:\\class\\test\\"+new Date().getTime()+file.getOriginalFilename();
File newFile=new File(path);
//通过CommonsMultipartFile的方法直接写文件(注意这个时候)
file.transferTo(newFile);
long endTime=System.currentTimeMillis();
System.out.println("方法二的运行时间:"+String.valueOf(endTime-startTime)+"ms");
return "success";
}
这里我只贴了第二种上传的方法,因为比较简单。还有两中代码都比较多,而且和教程上的差不错,只修改了一下参数而已。
然后就可以实现图片上传功能:
这里我没有要用到前端只是把上传的图片显示出来,我现在只能把图片的名称显示出来。
然后测试了一下上传之后把图片保存在本地:
上传成功之后带上时间戳。然后再把人间路径放在七牛云的图片上传工具类里面:
qiniuDemo.upload("C:\\class\\test\\"+newTime+file.getOriginalFilename(),
newTime+file.getOriginalFilename());
很容易就像了图片上传到七牛云。
然后再把图片下载下来:
//构造私有空间的需要生成的下载的链接
String URL = "http://ozuqudaqr.bkt.clouddn.com/1511882368361c04-03.jpg";
//调用privateDownloadUrl方法生成下载链接,第二个参数可以设置Token的过期时间
String downloadRUL = authCreate().privateDownloadUrl(URL, 3600);
System.out.println(downloadRUL);
这里刚开始的时候我下载的是外链:
http://ozuqudaqr.bkt.clouddn.com/1511876538096c04-03.jpg?e=1511883042&token=Z88wd40AR3MJNQK_vuOh5Iy42NSX8fBPmlAGimY_:ymZdonEBEF5gTj0bV_KMnKPb4uY=
就是这种。我搞不懂什么意思,然后请教了大佬一波,大佬告诉我,在数据库里面存储的都是图片的路径(像外链之类的),不可能把图片存储在数据库中的,因为图片太大了。太占用数据库空间了。
然后今天师兄告诉我,我的代码写的台乱了,好多功能挤在一起,然后让我看了一眼修真院的注册页面的功能模块,看过之后立马发现了差距,自己的代码确实缺少规范。而且我的代码写的也很不严谨,仔细推敲的话,漏洞太多,这个等到任务做完之后,要看一下师兄和大佬们的代码是怎么写的。规范一下自己的代码,是自己也能写出优雅的代码。
明日计划的事情:
学习阿里云,最好实现图片的迁移功能。
遇到的问题:
自己的代码很不规范,更改起来很麻烦,而且松藕性太差,改一处可能好多地方都要改动,以后要好好学习代码规范,多看大牛的代码。
收获:
图片的上传功能,用三种方式实现图片上传。
任务开始时间:2017/11/23
预计完成时间:2017/12/1
延期:无
禅道:http://task.ptteng.com/zentao/my-task.html
评论