关于前端如何上传文件/服务器如何接受并保存

1.前端代码

javascript 复制代码
<template>
  <div>
    <input type="file" @change="handleFileChange" />
    <button @click="uploadFile">上传头像</button>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      file: null,
    };
  },
  methods: {
    handleFileChange(event) {
      this.file = event.target.files[0];
    },
    async uploadFile() {
      if (!this.file) {
        alert('请选择一个文件');
        return;
      }

      const formData = new FormData();
      formData.append('file', this.file);

      try {
        const response = await axios.post('/AccountAvatar', formData, {
          headers: {
            'Content-Type': 'multipart/form-data',
          },
        });

        if (response.data.success) {
          alert('文件上传成功');
          console.log('上传成功', response.data);
        } else {
          alert('文件上传失败: ' + response.data.message);
        }
      } catch (error) {
        console.error('上传失败', error);
        alert('上传失败: ' + error.message);
      }
    },
  },
};
</script>

2.后端代码

java 复制代码
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

@RestController
public class FileUploadController {

    @PostMapping("/upload")
    public String handleFileUpload(@RequestParam("file") MultipartFile file) {
        if (file.isEmpty()) {
            return "文件为空";
        }

        try {
            // 获取文件名
            String fileName = file.getOriginalFilename();

            // 将文件保存到服务器上的某个目录
            File dest = new File("/path/to/save/" + fileName);
            file.transferTo(dest);

            return "文件上传成功";
        } catch (IOException e) {
            e.printStackTrace();
            return "文件上传失败";
        }
    }
}
相关推荐
凯子坚持 c2 分钟前
Redis 数据库的服务器部署与 MCP 智能化交互深度实践指南
服务器·数据库·redis
肉清13 分钟前
linux自用命令
linux·服务器·前端
星星泡饭29215 分钟前
工业标识自动化——MARKING Configurator 从数据导入到热转移打印的全流程教程
运维·自动化·菲尼克斯
Xの哲學16 分钟前
Linux链路聚合深度解析: 从概念到内核实现
linux·服务器·算法·架构·边缘计算
中科米堆18 分钟前
自动化大尺寸批量3D检测,自动化三维扫描系统实现钢板支架在线检测-中科米堆CASAIM
运维·3d·自动化·3d全尺寸检测
cetcht888821 分钟前
35kV-750kV 变电站集中监控系统(涵盖火灾消防、安全防卫、动环、智能锁控、智能巡视等) 设备配置与布置
大数据·运维·物联网·机器人·能源
wanhengidc22 分钟前
具有ARM架构云手机的功能
运维·服务器·arm开发·科技·智能手机·云计算
图乐aj23 分钟前
MySQL 运维之日常运维篇 二
运维·mysql
wanhengidc30 分钟前
巨 椰 云手机离线多开
运维·服务器·科技·智能手机·云计算
代码游侠31 分钟前
应用——管道与文件描述符
linux·服务器·c语言·学习·算法