Java实现图片文件的上传和获取

在做一个网站开发时,难免会遇到图片等文件的上传和获取,举一个简单的例子,就是用户的头像问题,我们应该怎么上传,怎么获取,上传到哪呢,等一系列的问题,其实像图片这些文件,存储在云存储空间比较合适,但是收费的,这里就以上传到本地为例了,首先找一个地方放你的图片,这里我以E盘下的upload文件夹为例

前端提供一个表单

<form action="/uploadImage" method="post" enctype="multipart/form-data">
    <input type="file" name="file"/> <br>
    <input type="submit" value="上传">
</form>

当选择图片后,点击上传,为了实现图片的唯一性,我们需要对图片的名字进行处理,处理的方式是,生成随机的名字并保留扩展名,我们需要对该图片的名字进行截取,只要扩展名(统一小写),也就是最后一个点后面的部分

int doPos = file.getOriginalFilename().lastIndexOf("."); //获取最后一个点的索引值

String fileExt= file.getOriginalFilename().substring(doPos + 1).toLowerCase();//获取扩展名

 得到扩展名之后,我们生成一个唯一的新名字,并和.扩展名进行拼接,生成一个崭新的唯一的名字

String fileName = UUID.randomUUID().toString().replaceAll("-","") + "." + fileExt;

到这里,图片的名字就处理好了,接下来就是核心部分了,我们把在上传的图片以流的形式copy到我们的目标文件夹

Files.copy(file.getInputStream(),new File("E:/upload/" + fileName).toPath());

好了,到这里上传文件就结束了

下面说说怎么读取文件夹中的文件,读取就比较简单了,也不用处理文件名了,我们只需要把目标图片的路径copy到输出流就行

Files.copy(Paths.get("E:/upload/" + fileName),response.getOutputStream());

这样我们的图片就存在于输出流了,我们可以在浏览器上访问了,根据下图,可得URL格式如下

http://127.0.0.1:8080/imgage?fileName=1e43820d9fed45c8a1fb2d786fca0ba0.jpg

发布了459 篇原创文章 · 获赞 298 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/HeZhiYing_/article/details/104778182