Elementui实现照片上传到阿里云OSS服务器上
一、准备工作
- 首先在阿里云上注册账户并开通oss服务,开通完如下图
- 点击图片左上角,Bucket管理处,创建Bucket,默认就可以。记住所创建的bucket的名字
- 获取Access Key,点击图片上方红色框处,按序操作就可以,会看见如下图:
- 要记住红色框柱的两个值,要用这个来应用oss服务
- 阿里云官方文档
二、开始工作
- springboot项目,springboot项目的搭建,我就不写了
- 引入阿里云OSS依赖
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.8.0</version>
</dependency>
- 开始编写代码
public class ALiYun {
public String ENDPOINT = "http://oss-cn-beijing.aliyuncs.com";
public String ACCESSKEYID = "LTAI4FfT6pPcw88P89JCxP6g";
public String ACCESSKEYSECRET = "mUQRBGCqqmgQfyRSOWnwMJqxna557M";
public String BUCKETNAME = "whqaly";
public String KEY = "images/";
public String getENDPOINT(){
return ENDPOINT;
}
public String getACCESSKEYID(){
return ACCESSKEYID;
}
public String getACCESSKEYSECRET(){
return ACCESSKEYSECRET;
}
public String getKEY(){
return KEY;
}
public String getBUCKETNAME(){
return BUCKETNAME;
}
}
- 地域节点哪里找?
- ok,接下来,可以直接编写 controller 了,不需要service。
@RestController
@RequestMapping("/imgg")
public class ImgController {
@RequestMapping("/uploadImg")
public Map<String,String> uploadImg(MultipartFile file) {
ALiYun aly = new ALiYun();
Map<String,String> outmap = new HashMap<>();
String flag = "false";
if (file != null){
String imgname = file.getOriginalFilename();
System.out.println(imgname);
try{
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String dote = df.format(new Date());
String newFileName = imgname +"-"+ dote;
System.out.println(newFileName);
InputStream input = file.getInputStream();
OSS ossClient = new OSSClientBuilder().build(aly.getENDPOINT(), aly.getACCESSKEYID(), aly.getACCESSKEYSECRET() );
ossClient.putObject(aly.getBUCKETNAME(),aly.getKEY() + newFileName,input);
ossClient.shutdown();
flag = "true";
}catch (IOException e){
System.out.println("OMG,我捕捉到你了!");
}finally {
outmap.put("resultFlag",flag);
}
}
return outmap;
}
}
- 前端使用elementui,很方便,注意: action 的值是后端服务器的路径
<el-upload
class="upload-demo"
action="http://127.0.0.1:8080/newweb/imgg/uploadImg"
:on-preview="handlePreview"
:on-remove="handleRemove"
:file-list="fileList"
list-type="picture"
accept=".jpg,.png"
>
<i class="el-icon-upload" style="padding-top: 20px"><br><span style="font-size: 20px">上传图片</span></i>
<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
</el-upload>
- 到此大工告成!