web上传图片到七牛云服务器

2023-11-13

本文通过java web的使用,把要上传的图片通过浏览器上传到服务器上面.
` 文本仅供参考,可能出现很多不合理;


` 1 创建对应的jsp页面:
下面是jsp下面的对应的from表单,上传文件用的那么ImgFiles的属性名称,同样你可以使用其他的,或者以数组的形式,比如imgFiles[0],…

<form action="http://ipAdress:9010/api/sdingba/upload" method="post"
      enctype="multipart/form-data">
    <p>
        选择文件:<input type="file" name="imgFiles">
    <p>
        选择文件:<input type="file" name="imgFiles">
    <p>
        选择文件:<input type="file" name="imgFiles">
    <p>
        <input type="submit" value="提交">
</form>

2, 创建对应的voParam
本文主要将文件上传,不涉及其他的参数

private List<MultipartFile> imgFiles;
// set and get method ...

3,创建对应的控制器Controller
用控制器的方式,绑定参数的方式添加对应的图片文件的属性.

    @ResponseBody
    @RequestMapping("/upload")
    public BaseVO addMaterialData(AdMaterialParam param) 
    {
        List<MultipartFile> multipartFiles = adMaterialParam.getImgFiles();
        //这样就算获取到了上传的文件了,
        //如果你吧文件添加到服务器本地上面,你可以使用org.apache.commons.io下面的FileUtils对象直接吧文件复制到本地,
        //比如:FileUtils.copyInputStreamToFile(file.getInputStream(), new File(path, filename));
    }

4,但是如果想上传到七牛云还是要做很多的处理的;如下
比如,你可能要处理文件的大小格式后在添加到云上面,等等,

本文的文件上传的格式使用的是MultipartFile属性的imgFile.getBytes()属性,
imgFile.getInputStream()可以获取流信息;
    //imageFiles是获取到的  List<MultipartFile>
    List<AdImagePath> adImagePaths = new ArrayList<>();
        AdImagePath adImagePath;
  for (int i = 0; i < imageFiles.size(); i++) {
            adImagePath = new AdImagePath();
            adImagePath.setMaterialId(adMaterialId);
            MultipartFile imgFile = imageFiles.get(i);

            try {
                boolean isImage = isImage(imgFile.getInputStream());
                if (isImage) {
                    // 处理文件 大小
                    byte[] imgBytes = setImageTypeSize(setWidth, setHeight, imgFile);

                    if (!CollectionUtils.sizeIsEmpty(imgBytes)) {
                        String resultPath = qiniuYunUtils.upload(imgBytes, imgFile.getOriginalFilename(),
                                String.valueOf(i + 1));
                        // String resultPath=qiniuYunUtils.upload(imgFile.getBytes(),imgFile.getOriginalFilename());
                        String path = JSON.parseObject(resultPath).get("key").toString();
                        adImagePath.setImageUrl(path);
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
                jsonObject.put("result", "error");
            }
            adImagePaths.add(adImagePath);
        }
**以下是上面那段代码包含的函数;不足的参考上一篇博客,utils**
/**
     * 判断文件是否是图片格式
     *
     * @param imageFile
     * @return
     */
    private boolean isImage(InputStream imageFile) {
        Image img = null;
        try {
            img = ImageIO.read(imageFile);
            if (img == null || img.getWidth(null) <= 0 || img.getHeight(null) <= 0) {
                return false;
            }
            return true;
        } catch (Exception e) {
            return false;
        } finally {
            img = null;
        }
    }
   /**
     * 设置图片格式的大小
     *
     * @param setWidth
     * @param setHeight
     * @param imgFile
     * @return
     * @throws IOException
     */
    private byte[] setImageTypeSize(int setWidth, int setHeight, MultipartFile imgFile) throws IOException {
        byte[] imgBytes;
        if (setWidth > 0 || setHeight > 0) {
            imgBytes = qiniuYunUtils.resizeImageFile(imgFile.getInputStream(), setWidth, setHeight);
        } else {
            imgBytes = imgFile.getBytes();
        }
        return imgBytes;
    }
 /**
     * 上传文件
     * 
     * @param file byte[]
     * @param fileName
     * @return 文件名
     */
    public static String upload(byte[] file, String fileName, String orderBy) {
        String key = orderBy + "=" + UUID.randomUUID().toString() + "_" + fileName;
        UploadManager uploadManager = new UploadManager();// 创建上传对象
        try {
            Response res = uploadManager.put(file, key, getUpToken());
            return res.bodyString();
        } catch (QiniuException e) {
            Response r = e.response;
            LOGGER.error("上传七牛云异常:", r.toString());
            try {
                LOGGER.error("上传七牛云异常:", r.bodyString());
                System.out.println();
            } catch (QiniuException e1) {
            }
        }
        return null;
    }
**下一篇博客将 七牛云的数据怎么下载.**
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

web上传图片到七牛云服务器 的相关文章

  • Grails 3.x bootRun 失败

    我正在尝试在 grails 3 1 11 中运行一个项目 但出现错误 失败 构建失败并出现异常 什么地方出了错 任务 bootRun 执行失败 进程 命令 C Program Files Java jdk1 8 0 111 bin java
  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • 如何使用 Java 和 Selenium WebDriver 在 C 目录中创建文件夹并需要将屏幕截图保存在该目录中?

    目前正在与硒网络驱动程序和代码Java 我有一种情况 我需要在 C 目录中创建一个文件夹 并在该文件夹中创建我通过 selenium Web 驱动程序代码拍摄的屏幕截图 它需要存储在带有时间戳的文件夹中 如果我每天按计划运行脚本 所有屏幕截
  • 为什么 i++ 不是原子的?

    Why is i Java 中不是原子的 为了更深入地了解 Java 我尝试计算线程中循环的执行频率 所以我用了一个 private static int total 0 在主课中 我有两个线程 主题 1 打印System out prin
  • Java中反射是如何实现的?

    Java 7 语言规范很早就指出 本规范没有详细描述反射 我只是想知道 反射在Java中是如何实现的 我不是问它是如何使用的 我知道可能没有我正在寻找的具体答案 但任何信息将不胜感激 我在 Stackoverflow 上发现了这个 关于 C
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • JAXb、Hibernate 和 beans

    目前我正在开发一个使用 Spring Web 服务 hibernate 和 JAXb 的项目 1 我已经使用IDE hibernate代码生成 生成了hibernate bean 2 另外 我已经使用maven编译器生成了jaxb bean
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • 如何为俚语和表情符号构建正则表达式 (regex)

    我需要构建一个正则表达式来匹配俚语 即 lol lmao imo 等 和表情符号 即 P 等 我按照以下示例进行操作http www coderanch com t 497238 java java Regular Expression D
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • 在mockito中使用when进行模拟ContextLoader.getCurrentWebApplicationContext()调用。我该怎么做?

    我试图在使用 mockito 时模拟 ContextLoader getCurrentWebApplicationContext 调用 但它无法模拟 here is my source code Mock org springframewo
  • 声明的包“”与预期的包不匹配

    我可以编译并运行我的代码 但 VSCode 中始终显示错误 早些时候有一个弹出窗口 我不记得是什么了 我点击了 全局应用 从那以后一直是这样 Output is there but so is the error The declared
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • 当我从 Netbeans 创建 Derby 数据库时,它存储在哪里?

    当我从 netbeans 创建 Derby 数据库时 它存储在哪里 如何将它与项目的其余部分合并到一个文件夹中 右键单击Databases gt JavaDB in the Service查看并选择Properties This will
  • JGit 检查分支是否已签出

    我正在使用 JGit 开发一个项目 我设法删除了一个分支 但我还想检查该分支是否已签出 我发现了一个变量CheckoutCommand但它是私有的 private boolean isCheckoutIndex return startCo

随机推荐

  • Python特征工程

    文章目录 一 自动化EDA 二 准备工作 一 合并数据 二 groupby聚合观察数据特征 三 去重 四 按列排序 五 随机抽数 六 保存 创建 与拼接 七 转换数据格式 八 删除列 三 特征中的异常值处理 一 箱线图公式处理异常值 1 删
  • centos 7 安装 Confluence 过程记录

    这段时间想建立一个资料库 对比了一下最终选择了Confluence 趁着放假时间整理了一下笔记 方便以后查询 顺便分享一下 目录 一 小插曲 二安装用到的软件 三 安装数据库 3 1卸载MariaDB 3 2安装MySQL 四 安装Conf
  • mysql开启和关闭远程访问权限

    文章目录 说明 用的是 navicat 连接工具 1 mysql开启远程访问权限 1 1 改表法 1 2 语句更改 2 mysql关闭远程访问权限 2 1 改表法 2 2 语句更改 说明 用的是 navicat 连接工具 先来看下mysql
  • Unity3D实践系列07,组件的启用或禁用开关,物体的的可见或不可见开关,以及相应事件...

    创建一个Unity项目 在 Project 窗口中 在 Asserts 中 添加 MyScene 文件夹 点击 File 中的 Save Scene 给Scene命名 并保存到 MyScene 文件夹 创建一个类型为 Plane 的Game
  • jsp的基本认识与理解

    简介 JSP全称是JavaServer Pages 它和servlet技术一样 都是SUN公司定义的一种用于开发动态web资源的技术 JSP这门技术的最大的特点在于 写jsp就像在写html 但 它相比html而言 html只能为用户提供静
  • 阿里云Windows Server 利用Subversion和TortoiseSVN部署SVN服务器

    SVN 全称为 SubVersion 是一个开源的版本控制系统 管理着随时间而改变更新的数据 这些数据都放置在一个中央资料档案库 repository 中 它类似于一个普通的文件服务器 可以记录每一次文件的更 新变动 这样就可以把档案恢复到
  • rabbitmq取消自动重连_RabbitMQ Java客户端自动重新连接

    When my application looses connection to RabbitMQ I have its connection factory set to automatically try and reconnect C
  • 小白也能弄懂的目标检测之YOLO系列 - 第一期

    大家好 上期分享了电脑端几个免费无广告且实用的录屏软件 这期想给大家来讲解YOLO这个算法 从零基础学起 并最终学会YOLOV3的Pytorch实现 并学会自己制作数据集进行模型训练 然后用自己训练好的模型进行预测 话不多说 先上我用Vis
  • windows命令行文件中获取bat文件所在目录相关路径

    批处理命令获取当前盘符和当前目录 d0 是当前盘符 cd 是当前目录 可以用echo cd 进行打印测试 以下例子是命令行编译Visual Studio编写的程序 echo off set b cd 将当前目录保存到参数b中 等号前后不要有
  • qrcode 生成二维码的代码

  • CentOs7.5安装JDK1.8详细步骤

    1 先检查系统中有没有自带的JDK 有就卸载 查询命令 rpm qa grep jdk color 卸载命令 rpm e nodeps 软件名称 再次查询检查是否成功 rpm qa grep jdk color 没有提示也没有报错就是操作成
  • 大厂测试工程师面试题总结-三面(附参考答案)

    三面 1 指针常量 常量指针 指针常量 1 指针常量的本质是一个常量 并且使用指针来修饰它 2 通过对const定义 我们可以简单理解为这个指针是个常量 它不可以被修改 即它只能指向开始时我们给赋值的变量 不可以被修改从而再指向其他的变量
  • 安装mmdetection(windows下)

    windows环境安装mmdetection 创建pytorch环境 最终安装的版本信息 安装过程 step1 安装mmcv full step2 安装mmdetection 安装mmdet报错 Could not build wheels
  • Linux进程间通信--msgsnd函数的作用

    msgsnd函数用于将消息发送到消息队列中 它的原型如下 int msgsnd int msqid const void msgp size t msgsz int msgflg 参数解释 msqid 消息队列标识符 由msgget函数返回
  • windows系统查看进程端口号的命令

    查看进程端口号 1 查看windows所有端口进程 netstat ano 命令提示符窗口 2 查询指定的端口占用 netstat aon findstr 端口 显示列表中的PID 然后根据PID在电脑的任务管理器中查看对应的占用程序 根据
  • Python 生成当前项目依赖包 requirements

    Python 生成当前项目依赖包 requirements 1 安装 pipreqs pip install pipreqs 2 执行命令 在当前工程目录生成 pipreqs encoding utf8 force 3 使用requirem
  • CentOS下ELK 7.2生产安全部署

    01 架构说明 在需要采集日志的服务器上部署Filebeat服务 它将采集到的日志数据推送到Kafka集群 Logstash服务通过input插件读取Kafka集群对应主题的数据 期间可以使用filter插件对数据做自定义过滤解析处理 然后
  • Android Studio 4.x 返回上一次编辑的地方

    Android Studio 升级到 4 x 后 返回上一次编辑的地方的快捷键变成了 Alt Shift 左箭头 了
  • JUC之ReentrantReadWriteLock

    JUC之ReentrantReadWriteLock 1 背景 由于ReentrantLock是独占可重入锁 因此在进行操作的时候 不能够满足多线程同时操作数据 为了满足并发场景下的临界资源的数据共享 出现了ReentrantReadWri
  • web上传图片到七牛云服务器

    本文通过java web的使用 把要上传的图片通过浏览器上传到服务器上面 文本仅供参考 可能出现很多不合理 1 创建对应的jsp页面 下面是jsp下面的对应的from表单 上传文件用的那么ImgFiles的属性名称 同样你可以使用其他的 或