实战day04(四)----图片上传功能实现

启动注册中心zookeeper。

进入zookeeper-bin使用命令:./zkServer.sh start

由于安装图片服务器的时候,把网段改了。所以,项目中的网段全部要修改:17改成25.


该install的install。然后启动项目。先manage,后web。


一、功能分析

图片上传的功能还没实现。

e3-manager-web->WEB-INF->jsp->item-add.jsp




参考资料上的截图:





使用的是KindEditor的多图片上传插件。

KindEditor 4.x 文档

http://kindeditor.net/doc.php

请求的url:/pic/upload

参数:MultiPartFileuploadFile

返回值:


可以创建一个pojo对应返回值。可以使用map

业务逻辑:

1、接收页面传递的图片信息uploadFile

2、把图片上传到图片服务器。使用封装的工具类实现。需要取文件的内容和扩展名。

3、图片服务器返回图片的url

4、将图片的url补充完整,返回一个完整的url。

5、把返回结果封装到一个Map对象中返回。

1、需要把commons-io、fileupload 的jar包添加到工程中。

去e3-parent的pom.xml中找到fileupload,然后,加到web项目中


2、配置多媒体解析器。


<!-- 定义文件上传解析器 -->
<bean id="multipartResolver"
	class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<!-- 设定默认编码 -->
	<property name="defaultEncoding" value="UTF-8"></property>
	<!-- 设定文件上传的最大值5MB,5*1024*1024 -->
	<property name="maxUploadSize" value="5242880"></property>
</bean>

二、controller




这样,在controller中就可以注入这个值了。


@Controller
public class PictureController {

	@Value("${IMAGE_SERVER_URL}")
	private String IMAGE_SERVER_URL;

	@RequestMapping("/pic/upload")
	@ResponseBody
	public Map fileUpload(MultipartFile uploadFile) {
		try {
			// 1、取文件的扩展名
			String originalFilename = uploadFile.getOriginalFilename();
			String extName = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
			// 2、创建一个FastDFS的客户端
			FastDFSClient fastDFSClient = new FastDFSClient("classpath:conf/client.conf");
			// 3、执行上传处理
			String path = fastDFSClient.uploadFile(uploadFile.getBytes(), extName);
			// 4、拼接返回的url和ip地址,拼装成完整的url
			String url = IMAGE_SERVER_URL + path;
			// 5、返回map
			Map result = new HashMap<>();
			result.put("error", 0);
			result.put("url", url);
			return result;
		} catch (Exception e) {
			e.printStackTrace();
			// 5、返回map
			Map result = new HashMap<>();
			result.put("error", 1);
			result.put("message", "图片上传失败");
			return result;
		}
	}
}

三、测试

该install的install,然后重启项目。


图片能回显,说明上传成功。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值