发表于: 2019-11-06 23:43:45
1 1093
今天完成的事情:
今天把假数据写完了,继续写接口。不过写接口请弄下上传图片和视频。
这是其中一位组员弄的第三方对象存储。这个在任务里做过,不过,感觉上比我的简单。
public class OSSServer {
private static final String ACCESS_KEY_ID = "LTAI4FnTLeAPpi4nx5RCPvL*";
private static final String ACCESS_KEY_SECRET = "tFcA6z3QXr0yHU89jKP4Jof3hCk2u*";
/**
* @Description: 普通图片上传,
*/
public String upAvatar(MultipartFile multipartFile) {
String endpoint = "http://oss-cn-beijing.aliyuncs.com";
String fileName = UUID.randomUUID().toString();
// 创建OSSClient实例。
OSS ossClient = new OSSClientBuilder().build(endpoint, ACCESS_KEY_ID, ACCESS_KEY_SECRET);
// 上传文件。<yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
try {
ossClient.putObject("qxdzzfeedback", "img/" + fileName + multipartFile.getOriginalFilename(), new ByteArrayInputStream(multipartFile.getBytes()));
return "https://qxdzzfeedback.oss-cn-beijing.aliyuncs.com/img/" + fileName + multipartFile.getOriginalFilename();
} catch (IOException e) {
return null;
} finally {
// 关闭OSSClient。
ossClient.shutdown();
}
}
}
使用的时候,用post把要上传的图片传过来就好了。
@RestController
public class UploadFilesController {
private final Logger log = LogManager.getLogger(this.getClass());
@PostMapping("/a/u/img")
public Map<String, Object> studySelect(MultipartFile file){
HashMap<String, Object> result = new HashMap<>(16);
try {
log.info("上传文件大小:{}字节", file.getSize());
OSSServer ossServer=new OSSServer();
String imgUrl=ossServer.upAvatar(file);
result.put("code", SUCCESS.getCode());
result.put("msg", SUCCESS.getMsg());
result.put("imgUrl",imgUrl);
return result;
} catch (Exception e) {
e.printStackTrace();
result.put("code", REQUEST_FAILED.getCode());
result.put("msg", REQUEST_FAILED.getMsg());
return result;
}
}
}
测试的时候用postman测试
注意body里传参,在参数后面选择File就可以上传你要传的文件了。
这里会返回上传到每三方存储的文件地址。嗯,其实是自己拼的。
这里要注意的是,其他上传文件可以统一管理,不用把上传图片和视频分开。反正都是文件。
下面是写前台的收藏接口,呃,没写完,要查询两张表,三个参数。逻辑是:根据用户ID查询当前用户收藏表里某个类型的学习对象列表。
想过查两次,但是分页我解决不了,后面问师兄,第一种,用in语句。
先查出这个用户收藏的所有学习对象ID,再用in语句查这些学习对象ID里类型等于自己需要的数据。还可以用分页。
后面呢,马哥有提供了一个语句:union all
网上看了下:
对于索引列来最好使用union all,因复杂的查询【包含运算等】将使or、in放弃索引而全表扫描
非索引字段用or或者in
在正常的 情况下,我要查的这几个字段都是要加索引的,所有,用union all
明天计划的事情:
使用 union all完成收藏列表查询
遇到的问题:
先解决在mapper.xml文件里写sql语句
收获:
多表查询的一种方法
评论