后端
@Component
public class MyCondiguration implements WebMvcConfigurer {
/**
* 虚拟路径配置
* @param registry
*/
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/Document/**").addResourceLocations("file:/D:/xinipic/");
WebMvcConfigurer.super.addResourceHandlers(registry);
}
}
第一种,存在本项目的static文件夹下
@RestController
@RequestMapping("/files")
public class FileController {
/**
* 单文件上传
* @param file
* @return
*/
@PostMapping("/upload")
public Result<String> upload(MultipartFile file) { //MultipartFile指的是前端文件
String filePath = System.getProperty("user.dir") + "/src/main/resources/static/file/"; //文件路径
//上传后的图片保存在本目录的static文件夹下
String flag = System.currentTimeMillis() + ""+ UUID.randomUUID(); //当前时间的long值创建一个新的名称
String fileName = file.getOriginalFilename(); //后缀名
try {
FileUtil.writeBytes(file.getBytes(), filePath + flag + "-" + fileName); //开始上传了
System.out.println(fileName + "--上传成功");
Thread.sleep(1L);
} catch (Exception e) {
System.err.println(fileName + "--文件上传失败");
}
return Result.success(flag);
}
第二种,存在本机的指定目录下
@PostMapping("/upload1") // /api/setmeal/upload
public Result<String> upload1(MultipartFile file) { //使用虚拟路径配置图片地址
String filePath = "D:/xinipic/"; //存在本机目录下
log.info("filePath=="+filePath);
String flag = System.currentTimeMillis() + ""+ UUID.randomUUID(); //当前时间的long值创建一个新的名称
log.info("图片的新名称是"+flag);
String fileName = file.getOriginalFilename(); //后缀名
log.info("后缀名是"+fileName);
try {
FileUtil.writeBytes(file.getBytes(), filePath + flag + "-" + fileName); //开始上传了
System.out.println(fileName + "--上传成功");
Thread.sleep(1L);
} catch (Exception e) {
System.err.println(fileName + "--文件上传失败");
}
return Result.success(flag);
}
前端
<el-form-item label="上传图片">
<el-upload
class="avatar-uploader"
action="/api/setmeal/upload1"
:show-file-list="false"
:on-success="handleAvatarSuccess"
:before-upload="beforeAvatarUpload">
<img v-if="imageUrl" :src="imageUrl" class="avatar">
<i v-else class="el-icon-plus avatar-uploader-icon"></i>
</el-upload>
</el-form-item>
<script>
let urlBase = "/api/setmeal/";
new Vue({
el: "#wrapper",
data: {
imageUrl: '',
},
methods: {
handleAvatarSuccess(res, file) {
this.imageUrl = URL.createObjectURL(file.raw);
},
beforeAvatarUpload(file) {
//这个是上传前对图片后缀名的校验,除了jpg还可以传png需要自己手动更改
const isJPG = file.type === 'image/jpeg';
const isLt2M = file.size / 1024 / 1024 < 10;
if (!isJPG) {
this.$message.error('上传图片只能是 JPG 格式!');
}
if (!isLt2M) {
this.$message.error('上传图片大小不能超过 10MB!');
}
return isJPG && isLt2M;
}
)}
<script>
版权声明:本文为aaqia原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。