zoukankan      html  css  js  c++  java
  • 微信小程序上传图片到COS腾讯云

    功能需求:用户可以在评论中上传图片,图片保存到腾讯云COS上。

    实现方法,微信小程序需要往后台传一个代表文件的参数file代表文件,借助MultipartFile获得文件的路径和文件名等信息。

    关键实现代码:

     @RequestMapping(value = "/plugins/fileServer/fileservice/sales/admin", method = RequestMethod.POST)
        void postAdmin(@RequestParam(value = "file", required = false) MultipartFile file, Integer preview_height, Integer preview_width, String target, String type, HttpServletRequest request, HttpServletResponse response) {
            String body = "";
            if (file == null) {
                response.setStatus(401);
                body = GsonUtils.obj2Gson(OutAdmin.error(401, "no file upload")).toString();
                ResponseUtils.renderJson(response, body);
                return;
            }
            if (preview_width == null) {
                preview_width = 128;
            }
            if (preview_height == null) {
                preview_height = 128;
            }
            String uploadPath = "/default";
            if (!StringUtils.isBlank(target)) {
                uploadPath = "/" + target;
            }
            String uploadPreviewPath = uploadPath + "/preview";
    
            CmsSite site = CmsUtils.getSite(request);
            String fileUrl = upload(site, file, uploadPath);
            if (fileUrl == null) {
                response.setStatus(401);
                body = GsonUtils.obj2Gson(OutAdmin.error(401, "upload error")).toString();
                ResponseUtils.renderJson(response, body);
                return;
            }
            String preview_fileUrl = uploadPreview(site, file, uploadPreviewPath, preview_width, preview_height);
            if (preview_fileUrl == null) {
                response.setStatus(401);
                body = GsonUtils.obj2Gson(OutAdmin.error(401, "upload preview error")).toString();
                ResponseUtils.renderJson(response, body);
                return;
            }
    
            String content_type = file.getContentType();
            String download_link = fileUrl;
            String fileid = FilenameUtils.getBaseName(fileUrl);
            String filename = FilenameUtils.getName(fileUrl);
            String preview_link = preview_fileUrl;
            Integer result = 0;
            OutAdmin outAdmin = new OutAdmin(content_type, download_link, fileid, filename, preview_link, result);
            body = GsonUtils.obj2Gson(outAdmin).toString();
            ResponseUtils.renderJson(response, body);
        }
    
        private String upload(CmsSite site, MultipartFile file, String uploadPath) {
            String origName = file.getOriginalFilename();
            Long fileSize = file.getSize() / 1024;//单位KB
            String ext = FilenameUtils.getExtension(origName).toLowerCase(Locale.ENGLISH);
            String fileUrl = null;
            try {
                if (site.getUploadOss() != null) {
                    // 支持上传(腾讯)云
                    CmsOss oss = site.getUploadOss();
                    fileUrl = oss.storeByExt(uploadPath, ext, file.getInputStream());
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return fileUrl;
        }

     

  • 相关阅读:
    Spring 基于构造函数的依赖注入
    SpringMVC后台接受前台传值的方法
    Spring--jar包
    Ubuntu扩展磁盘空间
    在VScode中运行C/C++
    一个好用的C语言操作
    Python下载超快
    Python多线程
    C语言回调函数
    VScode中运行python
  • 原文地址:https://www.cnblogs.com/yanqingguo/p/9816570.html
Copyright © 2011-2022 走看看