利用mysql实现上传和下载_文件的上传和下载功能

2023-11-13

1. 文件上传下载展示和思路

(1) 图片的上传,是把图片数据以二进制的方式放入数据库,还是把图片上传到服务器的某个目录下,数据库记录这个目录?哪种方式好?

数据库记录比较好

(2) 图片的上传下载在java中有哪些jar包支持?

commons-fileupload,commons-io

2. 开始上传并理解上传API的作用

(1) 简述文件上传的步骤

修改视图层,将form表单的上传类型改为enctype=“multipart/form-data”

修改控制层:创建FileItemFactory,第二步,创建ServletFileUpload对象,利用其parseRequest方法将其封装成fileItem对象中

遍历集合

(2) FileItem类的方法有哪些,分别是什么意思?

isFormField():是否是file表单项,是file false,不是file true

getFieldName():表单项name的属性值

getString():对于非file表单项,value的属性值,对于file表单项,文件内容

getName():对于file表单项,是上传文件的名称,对于非file表单项,返回null

getContentType():对于file表单项,是指文件上传类型,非file表单项,返回null

getSize():对于file表单项,是指文件大小,非file表单项,是指name的长度

3. 上传文件到指定目录

(1) 如何上传文件到指定目录?写出步骤

第一步:判断是否是文件

第二步:创建文件 File dir=new File(“d:/upload”); string name=item.getName();

第三步:File file=new File(dir,name);

第四步:item.write(file);

4. 完善上传文件到指定目录

(1) 本节课完善了文件上传的哪些点?实现代码是什么?

上传文件大小限制

限制上传文件类型

对于文件的重命名

sfu.setHeaderEncoding("utf-8");

//设置文件的大小

sfu.setFileSizeMax(40*1024);//设置单个文件大小

sfu.setSizeMax(10*16*1024);//设置多个文件大小

//通过ServletFileUpload对象实现上传操作,将客户端一个个表单项封装到一个个FileItem中

List itemList=null;

try {

itemList= sfu.parseRequest(request);

} catch (FileUploadException e) {

e.printStackTrace();

request.setAttribute("mess", "只能上传小于16kb的文件");

request.getRequestDispatcher("/add.jsp").forward(request, response);

return;

}

String contentType = item.getContentType();//images/jpg

photoType=item.getContentType();

if(!"image/jpeg".equals(contentType) && !"image/gif".equals(contentType)){

request.setAttribute("mess", "只能上传jpg和gif文件");

request.getRequestDispatcher("/add.jsp").forward(request, response);

return;

}

//指定上传的文件名

realName = item.getName();

String type = realName.substring(realName.lastIndexOf("."));

UUID uuid= UUID.randomUUID();

photoName=uuid.toString()+type;

//指定上传的文件夹和文件名

5. 保存上传信息到数据库

(1) 本节课要往数据库里面存哪些数据?这些数据的作用是什么?

Photoname :文件重命名的

Realname:真实名称

Phototype:文件类型

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用mysql实现上传和下载_文件的上传和下载功能 的相关文章

  • Java内存管理和面向对象

    Java内存管理 Java的内存管理是自动化的 通过垃圾回收器 Garbage Collector 简称GC 来管理内存分配和释放 在本教程中 我们将探讨Java中的内存管理概念 垃圾回收和一些内存管理相关的最佳实践 步骤1 Java的内存
  • 数据集【NO.10】天池布匹瑕疵检测

    写在前面 数据集对应应用场景 不同的应用场景有不同的检测难点以及对应改进方法 本系列整理汇总领域内的数据集 方便大家下载数据集 若无法下载可关注后私信领取 关注免费领取整理好的数据集资料 今天分享一个非常好的非常小众的研究方向 有应用创新
  • 分布式强一致算法 —— Raft算法

    背景 Paxos算法是最早的强一致性算法 1990年被Leslie Lamport提出 但是由于其难以理解和实现 导致没有被广泛使用 因此 2013年Raft算法被提出 功能与Paxos算法相同 更易于理解 实现简单 因此迅速被广泛推广使用
  • 嵌入式linux驱动之路19:U-Boot 移植(2)

    uboot 的最终目的就是启动 Linux 内核 所以需要通过启动 Linux 内核来判断 uboot 移植是否成功 在启动 Linux 内核之前我们先来学习两个重要的环境变量 bootcmd 和 bootargs bootcmd 环境变量
  • vue3+vite+ts 图标封装3种方案

    目录 一 使用 iconify 图标库 1 下载插件 2 配置 vite config ts 3 使用 3 1 方式 1 3 2 方式 2 二 使用 iconfont 图标库 1 下载 iconfont js 2 将 iconfont js
  • ElementUI 中 Tree 树形控件 添加自定义样式 虚线及图标样式

    修改前样式 修改后样式如图
  • MAC搭建M1环境的stable-diffusion

    MAC M1 搭建 stable diffusion 环境 文章目录 MAC M1 搭建 stable diffusion 环境 环境准备 1 硬件环境 2 系统环境 3 基础软件环境 主要参考资料 操作步骤 1 下载git 2 下载con
  • 量子信息-学习记录13

    ch 13 量子计算机的物理实现 续 量子计算机的基本事实 定义 Q tau Q Q 是量子系统在抵抗量子噪声 并维持自身的量子特性时所能够持续的最短时间
  • kettle使用常见问题解决-03

    kettle使用常见问题解决 03 一 kettle资源库总是断开 报的错误信息如下 An error occured loading the directory tree from the repository Error comitti
  • 如何在屏幕上打印

    这是本人发的第一个博客 我想用写博客来回顾和复习本人学习c语言的过程 我们学习计算机语言是为让计算机完成一定的任务 而任务的结果是在屏幕上显示出来的 因此 我们要学习如何在屏幕上打印内容 include
  • SAP之FIORI(1)-绪论

    SAP之FIORI 1 绪论 web IDE的下载地址 https tools hana ondemand com sapui5 下载好运行之后orion exe之后登录网址 http localhost 8080 webide index
  • 全面解析JavaScript中对于字符串子串的查询方法

    一 基本应用场景 Q1 给定字符串a xxx 给定字符串b xxxxxx 判定a是否为b的子串 基础手写实现方法 function checkHas longStr shortStr for let i 0 i lt longStr len
  • 基于遗传算法GA算法优化BP神经网络(Python代码实现)

    一 概述 BP GA算法的设计 基于遗传算法的BP神经网络算法 以下简称BP GA 就是在BP神经网络的学习过程中 将权重和阀值描述为染色体 并选取适宜的适应函数 然后进行GA迭代 直到某种意义上的收敛 与普通BP学习算法相比 算法 BP一
  • redis 主从配置

    转 https blog csdn net github 26672553 article details 69568259 redis主从配置初步 2个节点主从 如果我们redis的压力很大 如果我们的并发高到我们读数据和写数据都有了很大
  • 二维码的生意几乎革掉了钱包的命

    刷脸支付无需结账台 无需手机 如果说说二维码让手机成为了钱包 那刷脸支付则索性让钱包这个东西都直接革掉 而这也点燃了国内的新零售浪潮 二维码 革命的祸首在移动支付普及 线上线下建立联系这件事上 二维码其实功不可没 在此之前 线上的归线上 线
  • Cmake 官方中文教程

    CMake官方教程 2018年04月03日 22 00 21 SoftGit 阅读数 23072 很好的一个官方教程翻译文档 CMake简介 CMake是一个跨平台的 开源的构建工具 cmake是makefile的上层工具 它们的目的正是为
  • Node js 项目启动报错,错误码,events.js:141,throw er; //Unhandled 'error' event,解决办法

    Node js 项目启动报错 错误码 events js 141 throw er Unhandled error event 解决办法 当我遇到这个问题的时候 我纠结了好半天 找了好多资料 都说是端口占用 必须杀死端口重新启动 确实是这样
  • 上架发布应用市场资料填写规则限制

    应用名称填写时 名字长度有没有限制呢 1 名称 1 字数限制 iOS 30 Android 64 2 应用市场显示的名称 2 副标题 1 字数限制 iOS 30 2 应用市场显示的副标题 宣传文本填写时 可以编写多少个字 1 字数限制 iO
  • 目标检测分块知识总结 2

    tags 目标检测 1 FSAF 论文题目 Feature Selective Anchor Free Module for Single Shot Object Detection 2019 文章主要解决在进行多尺度检测的时候 利用特征金

随机推荐

  • C语言数据类型32位和64位不同

    http blog csdn net kongdefei5000 article details 38866985 C语言编程需要注意的64位和32机器的区别 一 数据类型特别是int相关的类型在不同位数机器的平台下长度不同 C99标准并不
  • linux修改启动内核版本

    cd etc default sudo gedit grub 编辑grub文件 修改grub文件如下 GRUB DEFAULT 1 gt 9 其中 1 代表开机启动界面中 选择 Advancded options for Ubuntu 选项
  • 初学黑客攻防[1]--禁止其他电脑访问本地电脑的80端口

    首先 win10家庭版需添加 本地安全策略 后进行该练习 1 打开 记事本 输入以下代码 echo off pushd dp0 dir b SystemRoot servicing Packages Microsoft Windows Gr
  • xilinx axi_iic IP使用分享

    仿真环境 例化了两组axi iic 的IP 一个slv一个mst slv地址固定为0x33 7bit模式 iic总线速率为4000K 仿真发现每次只能发送3byte数据 和实际不符 仿真仅作参考 由于iic为双向端口 通过例化顶层将IO连接
  • rsync实时监控以及守护进程

    rsync守护进程模式 服务端的操作 1 安装 root backup yum install y rsync 2 修改配置文件 下面有配置文件详解 root m01 vim etc rsyncd conf uid rsync gid rs
  • 关于jax,tensorflow的安装详细教程

    jax在下面pycharm中有提示你在哪里下载 所以如果下次遇到有什么要下载的包都可以尝试这种方式去下载 在找找pycharm有没有提示 然后直接点网站看教程 这嘎是官网的教程 很详细 为了下载一个版本只有JAX的cpu 可能要用到当地的开
  • 第四章 云原生架构之Kubernetes基础知识

    1 K8S整体架构 1 1 概述 Kubernetes是一个可移植 可扩展的开源平台 用于管理容器化的工作负载和服务 简称 K8S K8S的本质是一组服务器集群 可以在对应服务器集群的每个节点上运行程序 来对节点中的容器进行管理 类似Mas
  • 图形编程丨图形绘制基础imgui篇—D3D9 HOOK 创建内部Imgui窗口

    作者 小阿栗 Imgui又称为Dear ImGui 它是与平台无关的C 轻量级跨平台图形界面库 没有任何第三方依赖 可以将Imgui的源码直接加到项目中使用 也可以编译成dll Imgui使用DX或者OpenGL进行界面渲染 Imgui主要
  • Redis三种集群模式-主从模式

    一 引言 Redis有三种集群模式 第一个就是主从模式 第二种 哨兵 模式 第三种是Cluster集群模式 第三种的集群模式是在Redis 3 x以后的版本才增加进来的 我们今天就来说一下Redis第一种集群模式 主从集群模式 二 配置说明
  • Beauty of the soul is the essential beauty(183词 批改网91)

    What proves universally acknowledged is that essential beauty has triggered widespread public attention Undoubtedly the
  • Hive(5) Hive的数据类型

    HIve 2 Hive的数据类型 数据类型 基本数据类型 Hive数据类型 对应Java数据类型 长度 byte 举例 tinyint byte 1 10 smallint short 2 20 int int 4 30 bigint lo
  • druid 概述

    1 什么样的业务适合用 Druid 时序化数据 Druid 可以理解为时序数据库 所有的数据必须有时间字段 实时数据接入可容忍丢数据 tranquility 目前 tranquility 有丢数据的风险 所以建议实时和离线一起用 实时接当天
  • linux 命令:umask 详解

    umask 的功能是展示或设置文件模式掩码 用法 umask p S mode 使用 mode 描述的格式设置文件模式掩码 如果未指定 mode 展示当前掩码 mode 可以是八进制数或者类似 chmod 中的符号字符串 p 以八进制数字表
  • sketch2code 有的叫screenshot to code什么的

    先mark一下项目 回头再深究 https github com mzbac sketch2code https www floydhub com emilwallner datasets html models 1 archives 转载
  • Undefined symbol解决方法

    1 初级错误 1 C中未定义 2 H中未引用 3 未包含含有该类型的 H文件 4 在keil中未添加 C或 H文件到工程 2 C和C 代码混合调用引起的未定义错误 1 一般情况下 Error L6218E Undefined symbol
  • 随机森林的优缺点

    网上有很多关于随机森林优缺点的总结 但是都只是抄来抄去 并没有对这些优缺点作说明 导致有些看不懂 本人根据自己的理解 对某些优缺点做一下说明 如果理解有不对的地方 欢迎大家指正 随机森林是一个用随机方式建立的 包含多个决策树的分类器 其输出
  • Java字符串的加密解密

    为了保证程序的安全 经常采用数据加密的方法 Java 中提供了专门用于加密运算的类和接口 除了使用加密类和接口外 还可以通过多种方式实现字符串的加密 其中常用的就是获取字符串的字节数组 之后对字节数组中的每个字节都进行运算 得到新的内容 这
  • 程序的组成部分

    程序的组成部分 如上图所示 程序由 code 到 stack 地址由小到大 text 之前有一段不可读的区域 text rodata data bss heap stack 的大小是在程序编译阶段确定的 text 段 存放程序代码的区域 r
  • 深入AMS源码(二)—— ActivityManagerService对Activity的调度管理

    1 概述 在上一篇深入AMS源码 一 ActivityManagerService的基础知识文章介绍了AMS的基础信息 主要包括AMS中主要的数据结构 主要功能类和属性以及AMS中对生命周期的调度方式 本篇主要从源码的角度分析下AMS对Ac
  • 利用mysql实现上传和下载_文件的上传和下载功能

    1 文件上传下载展示和思路 1 图片的上传 是把图片数据以二进制的方式放入数据库 还是把图片上传到服务器的某个目录下 数据库记录这个目录 哪种方式好 数据库记录比较好 2 图片的上传下载在java中有哪些jar包支持 commons fil