发表于: 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



返回列表 返回列表
评论

    分享到