配置文件
1.在springmvc配置多媒体解析器,配置指定图片服务器地址<context:property-placeholder location=“classpath:config/application.properties” />
2.application.properties内容:FILE_SERVER_URL=http://192.168.25.153/
3.拷贝客户端配置文件,修改图片服务器地址端口fdfs_client.conf,用于UploadController创建客户端的参数
angularJS的service层
app.service("uploadService",function ($http) {
this.uploadFile = function () {
//模拟表单提交数据
var formData = new FormData;
//追加参数:文件上传框的name,如果只有一个那就是0号索引
formData.append("file",file.files[0]);
return $http({
method:'POST',
url:'../upload.do',
data:formData,
//angularjs请求头设置undefined,浏览器会自动设置Content-Type设置为multipart/form-data.
headers:{'Content-Type':undefined},
//anjularjs transformRequest function 将序列化我们的 formdata object.
transformRequest:angular.identity
});
}
})
后台控制器
@RestController
public class UploadController {
//图片服务器fastDFS地址
@Value("${FILE_SERVER_URL}")
private String file_server_url;
@RequestMapping("/upload")
public Result upload(MultipartFile file) {
//获取文件名
String originalFilename = file.getOriginalFilename();
//从点最后一次出现的位置+1就是扩展名开始的位置,截取,得到扩展名
String extName = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
try {
//创建拍一个fastdfs客户端
FastDFSClient client = new FastDFSClient("E:\\IDEAPROGECTS\\PYG\\pinyougou-parent\\pinyougou-shop-web\\src\\main\\resources\\config\\fdfs_client.conf");
//上传文件,获取文件名
String fileId = client.uploadFile(file.getBytes(), extName);
String url = file_server_url + fileId;
//封装到响应消息
return new Result(true, url);
} catch (Exception e) {
e.printStackTrace();
return new Result(false, "文件上传失败");
}
}
}