java中使用fastDFS上传图片(前端ajax+后端ssm)
java中使用fastDFS上传图片(前端ajax+后端ssm)
- 准备:下载jar包
链接: fastDFS_client
提取码: 63m7
配置maven环境变量,与jdk配置方法相同。不再赘述:参考Windows中maven配置
找到你下载的jar包,直接在该路径下输入cmd回车
打包
1
2//打包命令
mvn install:install-file -DgroupId=org.csource.fastdfs -DartifactId=fastdfs -Dversion=1.2 -Dpackaging=jar -Dfile=fastdfs_client_v1.20.jar引入jar包
1
2
3
4
5
6
7//maven项目jar包依赖
<!-- 文件服务器 -->
<dependency>
<groupId>org.csource.fastdfs</groupId>
<artifactId>fastdfs</artifactId>
<version>1.2</version>
</dependency>加入配置文件,命名:“fastdfs.properties”,注意你的ip和端口
1
2
3charset=UTF-8
tracker_server=120.27.244.176:22122
http.tracker_http_port=80项目加入上传图片工具类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26public class UploadImg {
public static String imgUpload(MultipartFile imgFile) throws FileNotFoundException, IOException, Exception{
//1.加载配置文件ip端口
String properties_path = Thread.currentThread().getContextClassLoader().getResource("fastdfs.properties").getPath();
System.out.println(properties_path);
ClientGlobal.init(properties_path);
//2.创建管理端对象
TrackerClient trackerClient=new TrackerClient();
//3.获取连接
TrackerServer trackerServer=trackerClient.getConnection();
//4.创建储存端对象
StorageClient1 storageClient1=new StorageClient1(trackerServer, null);
//5.创建文件属性-对象数组
NameValuePair[] meta_list=new NameValuePair[1];
meta_list[0]=new NameValuePair("filename",imgFile.getOriginalFilename());
//6.上传文件
String path=storageClient1.upload_file1(imgFile.getBytes(), "jpg", meta_list);
//拼接fastdfs的IP前缀得到图片真实地址,注意修改你的ip
path="http://120.27.244.176/"+path;
System.out.println(path);
//返回一个真实地址
return path;
}
}前端html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41//ajax
//上传图片
$("#m_image_addr").live("change",function(){
//注意这里不能写错。。。
var file=$("#m_image_addr")[0].files[0];
var formData = new FormData();
formData.append("m_image_addr",file);
//对文件类型进行判断
var index=file.name.lastIndexOf(".");
var type=file.name.substring(index);
if(type!=".jpg"&&type!=".png"){
alert("只能上传jpg和png格式的图片!!");
return;
}
$.ajax({
url:"../upload.do",
data:formData,
dataType:"text",
type:"post",
//这两个属性必须设置!!!!
contentType: false,
processData: false, //设置为true时,ajax提交的时候不会序列化data,而是直接使用data
success:function (path) {
$("#yulan").attr("src",path);
}
})
})
//form
<!--enctype="multipart/form-data"不可省略-->
<form id="fm1" class="definewidth m20" enctype="multipart/form-data">
<table class="table table-bordered table-hover definewidth m10">
<tr>
<td width="10%" class="tableleft">图片</td>
<td>
<input type="file" id="m_image_addr" name="file" />
<image id="yulan" width="100px" height="80px" src=""></image>
</td>
</tr>
</table>
</form>
后端controller
1
2
3
4
5@RequestMapping(value="/upload.do",method={RequestMethod.POST,RequestMethod.GET})
@ResponseBody
public String upload(MultipartFile m_image_addr) throws Exception{
return UploadImg.imgUpload(m_image_addr);
}启动项目测试上传,图片自动显示到预览框
java中使用fastDFS上传图片(前端ajax+后端ssm)
http://example.com/54845.html