@PostMapping("/uploadImg") public Object uploadImg(@RequestParam MultipartFile file) throws IOException { String originalFilename = file.getOriginalFilename(); String type = FileUtil.extName(originalFilename); long size = file.getSize(); // 定义一个文件唯一的标识码 String fileUUID = IdUtil.fastSimpleUUID() + StrUtil.DOT + type; File uploadFile = new File(FILE_UPLOAD_PATH + fileUUID); // 判断配置的文件目录是否存在,若不存在则创建一个新的文件目录 File parentFile = uploadFile.getParentFile(); if (!parentFile.exists()) { parentFile.mkdirs(); } String url; // 获取文件的md5 String md5 = SecureUtil.md5(file.getInputStream()); // 从数据库查询是否存在相同的记录 Files dbFiles = getFileByMd5(md5); if (dbFiles != null) { url = dbFiles.getUrl(); } else { // 上传文件到磁盘 file.transferTo(uploadFile); // 数据库若不存在重复文件,则不删除刚才上传的文件 url = "http://localhost:9090/file/" + fileUUID; } // 存储数据库 Files saveFile = new Files(); saveFile.setName(originalFilename); saveFile.setType(type); saveFile.setSize(size / 1024); // 单位 kb saveFile.setUrl(url); saveFile.setMd5(md5); fileMapper.insert(saveFile); Map<String, Object> map = new HashMap<>(); map.put("errno", 0); map.put("data", JSONUtil.parseArray("[{\"url\": \"" + url + "\"}]")); return map; }
时间: 2023-06-20 12:07:24 浏览: 121
这段代码是一个用于文件上传的接口,使用了Spring的@PostMapping注解。当请求到达该接口时,会从请求中获取上传的文件,并将其存储到本地磁盘上指定的目录中。如果该文件已经存在于数据库中,则会返回该文件对应的URL,否则会将其记录在数据库中,并返回该文件的URL。最后,将结果封装成一个Map对象返回给调用方。
相关问题
@Controller public class FileUploadController { @PostMapping("/img") @ResponseBody public Map<String, Object> uploadImg(@RequestParam("file") MultipartFile file) { Map<String, Object> map = new HashMap<>(); if (file.isEmpty()) { map.put("code", 1); map.put("msg", "上传失败,请选择文件"); return map; } String fileName = file.getOriginalFilename(); String suffixName = fileName.substring(fileName.lastIndexOf(".")); String filePath = "D:/ideaprojects/SSM/BookShopSystem/src/main/webapp/static/img/"; fileName = UUID.randomUUID() + suffixName; File dest = new File(filePath + fileName); try { file.transferTo(dest); map.put("code", 0); map.put("msg", "上传成功"); map.put("url", "/static/img/" + fileName); return map; } catch (IOException e) { e.printStackTrace(); } map.put("code", 1); map.put("msg", "上传失败"); return map; } }
这是一个使用Spring MVC框架实现的文件上传控制器,其中包含一个PostMapping注解的方法uploadImg,用于处理上传文件的请求。这个方法接收一个MultipartFile类型的参数file,表示上传的文件。在方法中,首先判断文件是否为空,如果是则返回上传失败的信息;否则获取文件名和后缀名,并将文件保存到指定路径下。最后返回上传成功的信息和上传文件的访问路径。
import requests class wechatapi(): def __init__(self): self.acess_token_url= "https://api.weixin.qq.com/cgi-bin/token" self.query_tag_url= "https://api.weixin.qq.com/cgi-bin/tags/get" self.edit_tag_url= "https://api.weixin.qq.com/cgi-bin/tags/update?access_token='tokenValue'" self.upload_doc_url= "https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=’tokenValue’" self.session= requests.Session() def acess_token_api(self): params = { "grant_type": "client_credential", "appid" : "wx8a9de038e93f77ab", "secret" : "8326fc915928dee3165720c910effb86" } reponse = self.session.get(url=self.acess_token_url,params=params) token = reponse.json()["access_token"] print(token) return token # def query_tag_api(self): # params= { # "access_token": "tokenValue" # } a = wechatapi a.acess_token_api()报错信息Traceback (most recent call last): File "D:\pythonProject1\WeChat\api\weChatApi.py", line 38, in <module> a.acess_token_api() TypeError: wechatapi.acess_token_api() missing 1 required positional argument: 'self'为什么报错,该怎样解决
这个错误是因为你在调用方法时没有传入实例对象本身,缺少了 `self` 参数。在调用 `acess_token_api()` 方法时,需要在实例对象 `a` 上调用,即 `a.acess_token_api()`。你可以将 `a = wechatapi` 修改为 `a = wechatapi()` 来实例化该类,然后再调用方法。
阅读全文