以下是在若依框架单机版中实现上传图片到文件服务器以及浏览图片的代码示例及相关说明:
一、上传图片代码
-
前端部分(假设使用 Vue.js):
- HTML 表单:
<input type="file" @change="uploadImage">
- Vue 方法:
methods: { uploadImage(event) { const file = event.target.files[0]; const formData = new FormData(); formData.append('file', file); axios.post('/api/upload', formData, { headers: { 'Content-Type': 'multipart/form-data' } }) .then(response => { // 处理上传成功后的逻辑 console.log(response.data); }) .catch(error => { // 处理上传失败的逻辑 console.error(error); }); } }
- HTML 表单:
-
后端部分(假设使用 Java Spring Boot):
- 控制器方法:
@PostMapping("/upload") public Result<String> uploadFile(@RequestParam("file") MultipartFile file) { try { // 这里可以调用文件服务器的上传接口或者将文件保存到本地指定目录 // 假设保存到本地目录 /path/to/upload/directory String filePath = "/path/to/upload/directory/" + file.getOriginalFilename(); file.transferTo(new File(filePath)); return Result.success(filePath); } catch (IOException e) { return Result.error("上传失败"); } }
- 控制器方法:
二、浏览图片代码
-
前端部分:
- 在需要显示图片的地方使用以下方式:
<img :src="imageUrl" alt="上传的图片">
- Vue 数据属性和方法:
data() { return { imageUrl: null }; }, methods: { viewImage(imagePath) { this.imageUrl = imagePath; } }
- 在需要显示图片的地方使用以下方式:
-
后端部分:
- 提供一个获取图片的接口:
@GetMapping("/image/{imageName}") public ResponseEntity<byte[]> getImage(@PathVariable String imageName) { try { // 根据图片名称从存储位置读取图片 String filePath = "/path/to/upload/directory/" + imageName; File file = new File(filePath); byte[] imageBytes = Files.readAllBytes(file.toPath()); return ResponseEntity.ok() .contentType(MediaType.IMAGE_JPEG) .body(imageBytes); } catch (IOException e) { return ResponseEntity.notFound().build(); } }
- 提供一个获取图片的接口:
以上代码仅为示例,实际应用中需要根据具体的文件服务器配置和需求进行调整。同时,要注意处理文件上传大小限制、错误处理等情况,以确保系统的稳定性和安全性。