文件的上传学习

SAS Studio关于上传文件的学习心得 学习目标: 将含有多个sheets的excel数据导入到sas studio online,使其能在sas上被正常操作。 学习内容: 本地文件夹“folder”,里面含有一个子文件夹“files”,子文件夹内有一个excel表“Ice_Breaking.xlsx”, 如下图所示: 相应的,可以在sas studio上的Server Files and Folders创建相应的文件夹: 点击图标: 点击“Choose Files”上传本地文件“Ice_Breaking.xlsx”到刚刚在studio创建 阅读详情

文件的上传

首先了解DiskFileItemFactory类

package org.apache.commons.fileupload.disk;

import org.apache.commons.fileupload.FileItemFactory;

属性

        public static final int DEFAULT_SIZE_THRESHOLD = 10240;将文件保存在内存还是磁盘临时文件夹的默认临界值,值为10240,即10kb。

      private File repository;用于配置在创建文件项目时,当文件项目大于临界值时使用的临时文件夹,默认采用系统默认的临时文件路径,     可以通过系统属性 java.io.tmpdir获取。如下代码:

                            System.getProperty("java.io.tmpdir");

     private int sizeThreshold = DEFAULT_SIZE_THRESHOLD;

     private FileCleaningTracker fileCleaningTracker;


    /**
     * Sets the size threshold beyond which files are written directly to disk.
     *
     * @param sizeThreshold The size threshold, in bytes.
     *
     * @see #getSizeThreshold()
     *
     */
    public void setSizeThreshold(int sizeThreshold) {
        this.sizeThreshold = sizeThreshold;
    }

       Apache文件上传组件在解析上传数据中的每个字段内容时,需要临时保存解析出的数据,以便在后面进行数据的进一步处理     (保存在磁盘特定位置或插入数据库)。因为Java虚拟机默认可以使用的内存空间是有限的,超出限制时将会抛出“java.lang.OutOfMemoryError”错误。如果上传的文件很大,例如800M的文件,在内存中将无法临时保存该文件内容,Apache文件上传组件转而采用临时文件来保存这些数据;但如果上传的文件很小,例如600个字节的文件,显然将其直接保存在内存中性能会更加好些。

       setSizeThreshold方法用于设置是否将上传文件已临时文件的形式保存在磁盘的临界值(以字节为单位的int值),如果从没有调用该方法设置此临界值,将会采用系统默认值10KB。对应的getSizeThreshold() 方法用来获取此临界值。

    /**
     * Sets the directory used to temporarily store files that are larger
     * than the configured size threshold.
     *
     * @param repository The directory in which temporary files will be located.
     *
     * @see #getRepository()
     *
     */
    public void setRepository(File repository) {
        this.repository = repository;
    }


        setRepositoryPath方法用于设置当上传文件尺寸大于setSizeThreshold方法设置的临界值时,将文件以临时文件形式保存在磁盘上的存放目录。有一个对应的获得临时文件夹的 File getRespository() 方法。

         注意:当从没有调用此方法设置临时文件存储目录时,默认采用系统默认的临时文件路径,可以通过系统属性 java.io.tmpdir 获取。如下代码:

System.getProperty("java.io.tmpdir");

Tomcat系统默认临时目录为“<tomcat安装目录>/temp/”。


try {
            // 1,生成文件上传工厂
            DiskFileItemFactory factory = new DiskFileItemFactory();
            // 2,利用工厂生成文件上传核心类
            ServletFileUpload fileUpload = new ServletFileUpload(factory);
            // 3,利用上传核心类,解析request对象从请求正文中 分析出fileItem
            List<FileItem> itemList = fileUpload.parseRequest(request);
            for(FileItem item:itemList){
                if(item.isFormField()){
                    //说明当前的item是普通的字段项
                    String name=item.getFieldName();
                    String value=item.getString();
                    System.out.println(name+":"+value);
                }else{
                    //说明当前的item是文件上传
                    String fileName=item.getName();
                    String path=this.getServletContext().getRealPath("/upload");
                    InputStream in=item.getInputStream();
                    FileOutputStream out=new FileOutputStream(new File(path,fileName));
                    IOUtils.in2out(in, out);
                    IOUtils.close(in, out);
                }
            }
        } catch (FileUploadException e) {
            e.printStackTrace();
        }


ServletFileUpload类

在 fileupload 包中, HTTP 请求中的复杂表单元素都被看做一个 FileItem 对象;FileItem 对象必须由 ServletFileUpload 
类中的 parseRequest() 方法解析 HTTP 请求(即被包装之后的 HttpServletRequest 对象)出来,即分离出具体的文本表单
和上传文件;而 ServletFileUpload 对象的创建需要依赖于 FileItemFactory 工厂将获得的上传文件 FileItem 对象保存至
服务器硬盘,即 DiskFileItem 对象。

			// 2,利用工厂生成文件上传核心类
			ServletFileUpload fileUpload = new ServletFileUpload(factory);
			// 判断当前表单是否是一个正确的文件上传表单
			if (!fileUpload.isMultipartContent(request)) {
				throw new RuntimeException("请使用正确的文件上传表单进行文件上传!");
			}
			// 设置生成单个文件的最大值
			fileUpload.setFileSizeMax(1024 * 1024 * 270);
			// --限制文件上传总文件的最大值
			fileUpload.setSizeMax(1024 * 1024 * 500);
			//设置编码集解决文件名乱码问题;
			fileUpload.setHeaderEncoding("utf-8");

关于GitLab上使用git应用上传文件的学习 主要是对于使用GitGUI和GitBash来简单上传文件到GitLab的指定可访问项目中的一次实践学习 阅读详情

相关推荐

SSRF学习(5)gopher协议上传文件

题目:这次需要上传一个文件到flag.php了.祝你好运 首先从目标机本地访问flag.php: url=http://127.0.0.1/flag.php 得到一个文件上传的界面,需要上传一个Webshell。再查看源代码: /?url=file:///var/www/html/flag.php <?php ​ error_reporting(0); ​ if($_SERVER["REMOTE_ADDR"] != "127.0.0.1"){ echo "...

m0_64417923的博客 885

分片上传及断点续传原理深入分析及示例Demo

分片上传、断点续传,这两个名词对于做过或者熟悉文件上传的朋友来说应该不会陌生。之所有有这边文章,还是因为自己在网上浏览了一些文章后发现没有找到一篇能瞬间明白原理和实现的,因此决定自己写一篇文章,方便有需要的朋友了解原理和实现。 分片上传,就是将所要上传的文件,按照一定的大小,将整个文件分隔成多个数据块(我们称之为Part)来进行分别上传,上传完之后再由服务端对所有上传的文件进行汇总整合成原始的文...

马靖的个人技术博客 3万+

高斯投影坐标正反算算法(python)

高斯坐标正反算算法,在正算的时候,y的第一个数字表示是用几度带换算的,第二个数字和第三个数字表示带号。该程序是根据武汉大学出版社出版的第三版的《大地测量学基础》编写, 用于课程实验学习。

weixin_64338372的博客 4588

源码(四) - FileItemFactory和DiskFileItemFactory

一.概述 1.DiskFileItemFactory 默认的FileItemFactory实现 1.此实现创建FileItem实例,并将较小的items保存在内存中,将较大的items缓存到磁盘上的临时文件 2.存储到磁盘上内容的大小阈值和创建临时文件的目录都是可以配置的 3.如果没有配置,默认配置值如下:     3.1 大小阈值为10KB     3.2 Repository是系

李平安 3748

正负数据如何归一化_生信干货 | LC-MS代谢组学QI软件下机数据代谢物筛选和归一化如何做?...

上海·2019第一届多层组学前言技术发展华东区客户研讨会倒计时1天LC-MS非靶向代谢组学数据下机啦~~拿到一堆数据怎么办?不会高端代码,也不会自己写脚本,我怎么处理数据?​本期小编带来了LC-MS非靶向代谢组学下机数据处理实用干货,包括:下机定性结果表格的解析、代谢物筛选如何做?以及定量数据如何做归一化?实用干货,赶紧来抢~~话不多说,赶紧来学习吧~~非靶向LC-MS代谢组学的分析流程LC-MS...

weixin_36441329的博客 2984

QMT量化交易桥接方案深度对比:从MiniQMT淘汰说起

量化交易系统中的API桥接,本质是解决本地终端与底层交易引擎之间的通信瓶颈。其核心原理在于绕过GUI封装、直连确定性执行层,从而获得低延迟、高可靠、可监控的指令通路。技术价值体现在策略实盘一致性提升、毫秒级响应保障及运维可控性增强。典型应用场景包括打板策略、T+0套利、高频网格等对时效与稳定性双敏感的自动化交易。本文聚焦国金证券QMT专业版生态,系统剖析DLL注入、HTTP反向代理、IPC共享内存与官方HTTP API四大桥接路径的性能边界、合规风险与工程落地成本,尤其深入解析qmt终端 client is

weixin_33892359的博客 457

Apache FileUpload介绍

Apache FileUpload组件 在最初的 http 协议中,没有上传文件方面的功能。RFC1867("Form-based File Upload in HTML".)为 http 协议添加了这个功能。客户端的浏览器,如 Microsoft IE, Mozila, Opera 等,按照此规范将用户指定的文件发送到服务器。服务器端的网页程序,如 php, asp, jsp 等,可...

weixin_30273175的博客 457

Django Cookie/Session

Cookie是一种小型的文本文件,通常由Web服务器发送到用户浏览器,并存储在用户的本地计算机上。当用户再次访问该网站时,浏览器会将Cookie发送回服务器,从而实现用户身份验证、个性化设置等功能。Session是一种在服务器端存储用户会话信息的方式。与Cookie不同,Session数据存储在服务器上,而不是客户端。Django框架通过在客户端存储一个Session ID来实现Session的跟踪。Django框架的Cookie/Session机制为开发者提供了方便的数据存储和会话管理功能。

froginwe11的博客 467

记一次印象深刻的bug---并发下File has been moved - cannot be read again源码分析

记一次映像深刻的bug—File has been moved - cannot be read again 每天多学一点点~ 话不多说,这就开始吧… 文章目录记一次映像深刻的bug---File has been moved - cannot be read again1.前言2.代码3.分析6.结语 1.前言 之前和微信端调试接口,图片上传至OSS,因为微信的原因,不能批量上传,前端只能循环调...

爆裂无球的程序空间 3488

用 SAP XCO XLSX 模块优雅读 Excel:坐标、选择模式与实战案例全解析

SAP ABAP Cloud 中的 XCO XLSX 模块为 Excel 文件处理提供了官方解决方案。文章介绍了三个核心概念:通过 XCO_CP_XLSX=>DOCUMENT 获取文档句柄;使用 CL_XCO_XLSX_COORDINATE 坐标系统定位单元格;利用 Selection Pattern 精确读取数据区域。这些功能在 RAP 批量导入等业务场景中尤为实用,相比传统方案更加简洁可靠。文章还分享了真实项目中的最佳实践,如动态列定位和相对偏移技巧,帮助开发者构建更健壮的 Excel 导入逻辑。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 193

ESP32 DW1000 UWB 室内定位系统

详细介绍ESP32 DW1000 UWB 室内定位系统的设计演示demo。

DT程序员的博客 1662

学习笔记之- Apache fleupload文件上传

1.首先我们了解一些类的作用和方法。 1.DiskFileItemFactory类 属性: (1) public static final int DEFAULT_SIZE_THRESHOLD :将文件保存在内存还是磁盘临时文件夹的默认临界值,值为10240,即10kb。 (2) private File repository:用于配置在创建文件项目时,当文件项目大于临界值时使用的临时文件夹,默认采用系统默认的临时文件路径,可以通过系统属性 java.io.tmpdir获取。如下代码: System.g

Code_Guan的博客 627

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试

本文介绍了当使用Tessy对软件进行单元测试时如何打桩和指针相关测试的注意事项及操作要点,希望能给正在摸索Tessy的网友一点点启发。

啤酒鸭的物联网开发记录博客 1万+

学习 RAGFlow 的文件上传逻辑

在上一篇中,我们学习了 RAGFlow 的系统架构和启动流程,了解了 RAGFlow 的和两大核心组件,一个负责提供外部接口和平台基本功能,另一个则负责文件的解析和切片处理。从系统架构图中,我们可以看到 RAGFlow 的核心流程包括->->->->->这些步骤,今天我们就从源码的角度,先来学习下文件上传的相关逻辑。

h1453586413的博客 1752

运维简历优化指南,DeepSeek助您运维简历秒变高分!

例如,当掌握了新的运维技术,如 Serverless 架构的运维管理,就将其添加到简历的专业技能部分,并简要描述在相关项目中的应用情况和成果,如 “在 [项目名称] 中,负责 Serverless 架构的运维工作,成功实现了应用的低成本、高弹性运行,降低了运维成本 30%”。上传简历至 DeepSeek,并输入指令:“请根据以下岗位招聘要求,帮我重新解构我的简历,按照【教育背景→实习经历→项目经历→个人评价→技能证书】的模块,输出一份符合下述岗位的简历,提升我的求职竞争力。

大模型大数据攻城狮的专栏 1470

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

学习通的随堂练习的提交方式之文件上传

学习通的随堂练习的提交方式之文件上传

某人辛木的博客 2717

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

php学习——简易文件上传

php学习——简易文件上传 文件上传依然用form表单形式实现: <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <title>文件上传</title> </head> <body> <form action="t.php" met...

epicf的博客 1113

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

C++学习之云盘上传文件列表下载

C++学习之云盘上传文件列表下载

qq_27302885的博客 906

学习文件上传 下载

有谁精通JAVA中文件的上传与下载啊?小弟需要完整的代码来学习 谢谢

fxbly999的博客 129

JavaWeb学习总结(1)-文件上传

title: JavaWeb学习总结-文件上传&下载 date: 2019/1/17 8:38:25 updated: 2019/1/17 20:45:30 comments: false tags: JavaWeb 学习总结 ​ 文件上传: 将本地的文件通过流写入到服务器的过程,文件上传在实际开发中有很多应用场景: ​ QQ空间上传图片 ​ 招聘网站上传简历 常用的文件上传技术:...

weixin_45260624的博客 256

前端学习案例2-文件分片上传2

前端

qq_41632427的博客 89

记录学习:el-upload文件上传

【代码】记录学习:el-upload文件上传。

qq_62921991的博客 383

突破ChatGPT4.0文件无法上传的局限,提升学习效率

我非常高兴地告诉大家,我找到了一个强大的解决方案,成功地克服了这个限制。这个方法的好处不仅仅体现在解决了ChatGPT的局限性上,还在于它为我的学习提供了更加便捷和全面的体验。接下来,我开发了一个名为chat-upload的方法,这个方法可以方便地上传和管理我所需的PDF和图片文件。现在,当我需要查阅某个PDF或图片时,只需简单地告诉ChatGPT我需要的文件,并提供相应的链接。作为一名大学生,我最近在学习过程中遇到了一个非常棘手的问题,但是我终于找到了一个非常有效的解决方法,我想和大家分享一下。

weixin_52105111的博客 2万+

用安卓手机给学习通上的作业上传文件找不到怎么办

用安卓手机给学习通上的作业页面上传文件找不到怎么办

m0_58528895的博客 4994

文件上传学习中

关于文件上传 在最近的学习中,遇到了文件上传问题,然后在此记录一下,方便下次使用. 引入依赖 <!--添加servlet-api依赖--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.

CG123820的博客 259

【服务器】上传文件到服务器并训练深度学习模型&下载服务器文件到本地教程

本文教程为,上传文件到服务器并训练深度学习模型,与下载服务器文件到本地。演示指令输入,完整的上传文件到服务器,并训练模型过程,并演示完整的下载服务器文件到本地的过程。

嵌入式阿齐Archie 2405
上一篇: ServletContext的学习
下一篇: 程序员应该保护好眼睛
linuxMinx
博客等级 码龄15年 195粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值