目录
上传本地
1:上传到本地我们可以先写一个servise层
需要传入一个MultipartFile类型的值,从来存储我们的文件名字
2:实现我们的这个方法
最后可能会有异常,所以我们要抛出异常
3:在controller里我们调用我们实现的方法,加上路径
4:在jsp页面上写上form表单并启动浏览器
注:表单这个name是要和后台的传的那个xxx名字要一摸一样
5:最后选择我们要上传的图片
6:这样就算成功了
也可以去看看我们上传的那个路径或者文件夹里是否上传进去了没有
用ajax进行上传
1:和之前一样,我们只需要在jsp页面上先引入jq包,在加上ajax
2:启动项目
显示成功
上传到云端
1:需要先去阿里云里注册一个oss存储账号
创建好之后进入到oss管理控制台里,先创建一个Bucket
选择这些,写上名称
选完之后点击完成创建
创建自己的images目录,从来存储上传到这里的照片
然后点击我们的AccessKey管理
进去之后会有下载AccessKey文件,下载之后拿到AccessKey即可
2:先写上我们的一个实体类
3:在封装类上写上我们的存储路径和文件名,还有刚拿到的AccessKey
4:最后直接上代码
//文件上传
public FileUploadResult uploadFile(MultipartFile uploadFile) {
//设置一个自变量
boolean isLegal = false;
//上传过来的照片与IMAGE_TYPE做比较,如果上传过来的照片的后缀是IMAGE_TYPE类型就返回true
for (String type : IMAGE_TYPE) {
// // 判断上传文件的原始文件名是否以遍历的我们设置的允许上传的格式结尾,不区分大小写
if (StringUtils.endsWithIgnoreCase(uploadFile.getOriginalFilename(),
type)) {
isLegal = true;
break;
}
}
//封装Result对象,并且将文件的byte数组放置到result对象中
FileUploadResult fileUploadResult = new FileUploadResult();
//进入判断的逻辑是:该照片不是我们想要允许的格式,直接设置该实体类的状态,返回
if (!isLegal) {
fileUploadResult.setStatus("error");
return fileUploadResult;
}
//如果走到这一步,说明满足所有条件的照片
//获得文件的名字
String fileName = uploadFile.getOriginalFilename();
System.out.println("fileName: "+fileName); //全名加上路径
//照片存储的路径
String filePath = getFilePath(fileName);//文件真实存储路径,并将这个照片的名字进行改变
System.out.println("filePath: "+filePath);//images/2db0e12b-c59e-45ef-b35d-ceb218f4d2c4.png
// 上传到阿里云
try {
//根据Bucket的名字来确定是哪个存储空间,filePath存储在存储空间哪个位置,以流的形式 将uploadFile写入到filePath
oss.putObject(this.BUCKETNAME, filePath, new ByteArrayInputStream(uploadFile.getBytes()));
} catch (Exception e) {
e.printStackTrace();
//上传失败
fileUploadResult.setStatus("error");
return fileUploadResult;
}
//补充实体类
fileUploadResult.setStatus("done");
fileUploadResult.setResponse("success");
//this.aliyunConfig.getUrlPrefix() + filePath 文件路径需要保持数据库
//this.aliyunConfig.getUrlPrefix()+filePath 访问照片的真实路径
fileUploadResult.setName(this.URLPREFIX + filePath);
fileUploadResult.setUid(String.valueOf(System.currentTimeMillis()));
return fileUploadResult;
}
public String getFilePath(String sourceFileName) {
//获得文件后缀
int index = sourceFileName.lastIndexOf(".");
String suffix = sourceFileName.substring(index);
//这里生成了一个新路径
//在我们存储空间下的 /images/ + 随机数 + 文件后缀
return "images/" + UUID.randomUUID() + suffix;
}
有的路径和名字要改为自己的
5:jsp页面
MultipartFile uploadFile后面的参数要和前面传的的一摸一样,否则报错
6:效果
最后显示输出是这个样子就是成功了
在我们创建的image里也能看到上传的两个文件