使用 Chunks 和 MultipartFileupload 进行文件上传

2024-01-09

使用块上传和 MultipartFile 上传是否相同。有什么区别? 我尝试过使用 Multipartfile 上传。 我的要求是上传一个50MB的appx文件到服务器而不让用户等待很长时间。大约需要 2 分钟。


Chunks 和 Multipart 以不同的方式做同样的事情

块使上传将整个文件“分割”成小块(块)

这允许将非常大的文件(也可以是 1GB)分割成较小的部分并将它们发送到服务器,而不会出现浏览器中的连接超时问题;然后由服务器端处理这些块

您可以使用多个 JS 上传库来存储块(例如https://blueimp.github.io/jQuery-File-Upload/ https://blueimp.github.io/jQuery-File-Upload/ or http://www.plupload.com/ http://www.plupload.com/等等)

相反,Multipart 一次性上传文件;如果文件为 1MB,则上传所有 1MB;如果文件为 1GB,则加载所有 1GB

关于传输速度,我想这与带宽和互联网连接有关

我希望这可以帮助你

服务器端块管理示例

正如我告诉你的,由服务器端来管理块;我强烈避免将其存储在内存块中,因为您应该分配大量内存(如果文件是 1GB,您应该为每次上传分配 1GB)

在我的旧项目中,我使用了 plupload,这是我如何在服务器端管理块的摘录(注意:使用 Spring 完成的代码)

RequestMapping(method = { RequestMethod.POST }, value = { "/plupload" })
public ResponseEntity<List<UploadMediaResultDto>> uploadMedia(
                @RequestParam(required = true, value = "file") MultipartFile file, 
                @RequestParam(required = false, value = "name") String name, 
                @RequestParam(required = false, value = "chunks") Integer chunks, 
                @RequestParam(required = false, value = "chunk") Integer chunk)
{
boolean fullFile = false;
File theFile = new File(filePath);
if (chunk != null && chunks != null && (chunk == 0 && chunks == 1))
{
    fullFile = true;
}
if (!fullFile)
{
FileUtils.writeByteArrayToFile(theFile, file.getBytes(), append);
}
else
{
FileUtils.writeByteArrayToFile(theFile, file.getBytes());
}
}

正如你所看到的,我首先检查是否收到整个文件;如果不是,我以追加模式写入文件,否则我将其全部写入

我希望这有用

Angelo

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

使用 Chunks 和 MultipartFileupload 进行文件上传 的相关文章

  • 如何在java中将数组值排序为循环格式?

    我的数组值如下 String value 1 2 3 4 5 6 7 8 9 10 假设如果我将值 5 传递给 tat 数组 它应该按如下顺序排序 5 6 7 8 9 10 1 2 3 4 怎么办 有人帮忙吗 感谢你 你需要的就是所谓的轮换
  • 与 Eclipse 中的 Java Content Assist 交互

    作为我的插件项目的一部分 我正在考虑与 Eclipse 在 Java 文件上显示的内容辅助列表进行交互 我正在尝试根据一些外部数据对列表进行重新排序 我看过一些有关创建新内容辅助的教程 但没有看到有关更改现有内容辅助的教程 这可能吗 如果是
  • 如何在 JPQL 或 HQL 中进行限制查询?

    在 Hibernate 3 中 有没有办法在 HQL 中执行相当于以下 MySQL 限制的操作 select from a table order by a table column desc limit 0 20 如果可能的话 我不想使用
  • 如何在 Java 中向时间戳添加/减去时区偏移量?

    我正在使用 JDK 8 并且玩过ZonedDateTime and Timestamp很多 但我仍然无法解决我面临的问题 假设我得到了格式化的Timestamp在格林威治标准时间 UTC 我的服务器位于某处 假设它设置为Asia Calcu
  • Android studio - 如何保存先前活动中选择的数据

    这是我的代码片段 这Textview充当按钮并具有Onclicklistner在他们 当cpu1000时Textview单击它会导致cpu g1000其代码如下所示的类 public class Game 1000 extends AppC
  • 提供节点名或服务名,或未知 Java

    最近我尝试运行我的 Java 项目 每当我运行它并将其打开到我得到的服务器地址时 Unable to determine host name java net UnknownHostException Caused by java net
  • Mockito 使用 @Mock 时将 Null 值注入到 Spring bean 中?

    由于我是 Spring Test MVC 的新手 我不明白这个问题 我从以下代码中获取了http markchensblog blogspot in search label Spring http markchensblog blogsp
  • 断言 Kafka 发送有效

    我正在使用 Spring Boot 编写一个应用程序 因此要写信给 Kafka 我这样做 Autowired private KafkaTemplate
  • 将非 Android 项目添加到 Android 项目

    我在 Eclipse 中有三个项目 Base Server 和 AndroidClient Base和Server是Java 1 7项目 而AndroidClient显然是一个android项目 基础项目具有在服务器和 Android 客户
  • 将人类日期(当地时间 GMT)转​​换为日期

    我正在服务器上工作 服务器正在向我发送 GMT 本地日期的日期 例如Fri Jun 22 09 29 29 NPT 2018在字符串格式上 我将其转换为日期 如下所示 SimpleDateFormat simpleDateFormat ne
  • Akka 与现有 java 项目集成的示例

    如果我已经有现有的javaWeb 应用程序使用spring and servlet容器 将 Akka 集成到其中的正确方法是什么 就像我将会有Actor1 and Actor2互相沟通的 开始使用这些演员的切入点是什么 例如 1 把它放在那
  • 在Java中运行bat文件并等待

    您可能会认为从 Java 启动 bat 文件是一项简单的任务 但事实并非如此 我有一个 bat 文件 它对从文本文件读取的值循环执行一些 sql 命令 它或多或少是这样的 FOR F x in CD listOfThings txt do
  • Java继承,扩展类如何影响实际类

    我正在查看 Sun 认证学习指南 其中有一段描述了最终修饰符 它说 如果程序员可以自由地扩展我们所知的 String 类文明 它可能会崩溃 他什么意思 如果可以扩展 String 类 我是否不会有一个名为 MyString 的类继承所有 S
  • 如何在JPanel中设置背景图片

    你好 我使用 JPanel 作为我的框架的容器 然后我真的想在我的面板中使用背景图片 我真的需要帮助 这是我到目前为止的代码 这是更新 请检查这里是我的代码 import java awt import javax swing import
  • JDBC 时间戳和日期 GMT 问题

    我有一个 JDBC 日期列 如果我使用 getDate 则会得到 date 仅部分2009 年 10 月 2 日但如果我使用 getTimestamp 我会得到完整的 date 2009 年 10 月 2 日 13 56 78 890 这正
  • 轻松的反应

    我有一个与这里描述的类似的案例 动态更改RESTEasy服务返回类型 https stackoverflow com questions 3786781 dynamically change resteasy service return
  • 在java中以原子方式获取多个锁

    我有以下代码 注意 为了可读性 我尽可能简化了代码 如果我忘记了任何关键部分 请告诉我 public class User private Relations relations public User relations new Rela
  • Java RMI - 客户端超时

    我正在使用 Java RMI 构建分布式系统 它必须支持服务器丢失 如果我的客户端使用 RMI 连接到服务器 如果该服务器出现故障 例如电缆问题 我的客户端应该会收到异常 以便它可以连接到其他服务器 但是当服务器出现故障时 我的客户端什么也
  • Java 11 - 将 Spring @PostConstruct 替换为 afterPropertiesSet 或使用 initMethod

    我正在使用 spring 应用程序 有时会使用 PostConstruct用于代码和测试中的设置 看来注释将被排除在外Java 11 https www baeldung com spring postconstruct predestro
  • 由 Servlet 容器提供服务的 WebSocket

    上周我研究了 WebSockets 并对如何使用 Java Servlet API 实现服务器端进行了一些思考 我没有花费太多时间 但在使用 Tomcat 进行一些测试时遇到了以下问题 如果不修补容器或至少对 HttpServletResp

随机推荐

  • 传递 MethodHandles.lookup().lookupClass() 与传递 Class 到 getLogger 方法

    我最近遇到了一个声明如下的记录器 private static final Logger logger LoggerFactory getLogger MethodHandles lookup lookupClass 与像这样 正常 声明相
  • Symfony2.1 - 使用 DataTransformer 时选项“em”不存在

    我在用this http symfony com doc master cookbook form data transformers html在 Symfon 2 1 中添加数据转换器的食谱食谱 但我收到以下错误 The option e
  • _GLIBCXX_USE_CXX11_ABI 在 RHEL6 和 RHEL7 上禁用?

    我在 RHEL6 和 RHEL7 上安装了 gcc 5 2 1 看起来 GLIBCXX USE CXX11 ABI 被禁用了 即使我手动运行也不起作用 D GLIBCXX USE CXX11 ABI 1 std c 14 这意味着我不会获得
  • 从 django 循环中提取值

    我有一个 Django 应用程序 我在模板中使用以下内容 load mptt tags ul recursetree nodes li node name if not node is leaf node ul class children
  • 如何运行量角器?

    我对量角器很陌生 我在 Windows 命令行中运行它 我按照这个教程进行操作https github com angular protractor blob master docs getting started md https git
  • IBM Worklight - 在服务器端包含 JavaScript 库

    我正在使用 IBM Worklight 构建移动应用程序 在适配器中 我需要使用第三方 JavaScript 文件提供的一些功能 我想知道是否可以在服务器上包含这样的文件 如果不是 还有什么替代方案 目前无法在适配器代码中包含外部 Java
  • Spring REST API 中的 Json 模式验证

    我正在使用 Spring Boot 和 jackson module jsonSchema 构建 REST API https github com FasterXML jackson module jsonSchema https git
  • 为具有相同类的元素添加点击事件监听器

    我有一个删除 id 的列表视图 我想为具有特定类的所有元素添加一个侦听器 并执行确认警报 我的问题是 这似乎只将侦听器添加到它找到的类的第一个元素 我尝试使用querySelectorAll但没有成功 var deleteLink docu
  • 将命令行 tf checkin 链接到工作项

    我想通过以下方式将文件提交到 TFS 存储库tf命令行工具并将提交链接到 TFS 工作项 我该怎么做 我已经提交了我的文件 但没有指向工作项目的链接 我的命令添加一个新文件并提交更改 gt tf add foo cpp gt tf chec
  • 如何使用 Zeppelin 访问 aws spark-ec2 集群和 s3 存储桶

    我有一个通过 Spark ec2 脚本设置的 aws ec2 集群 我想配置 Zeppelin 以便我可以在 Zeppelin 本地编写 scala 代码并在集群上运行它 通过 master 此外 我希望能够访问我的 s3 存储桶 我跟着本
  • 无法加载文件或程序集>'System.Windows,版本=2.0.5.0

    首次加载 Silverlight 应用程序时 我不断收到此错误 无法加载文件或程序集 系统 Windows 版本 2 0 5 0 文化 中立 PublicKeyToken 7cec85d7bea7798e 或 它的依赖项之一 系统 找不到指
  • 我应该记录类似函数签名的参数吗?

    我有一些辅助函数 除了第一个参数之外 它们采用与核心函数相同的参数 这些参数被完整记录在核心函数中 我是否也应该将此文档复制粘贴到辅助函数中 或者只是指向核心文档 重要的是 我主要希望将我的 API 参考作为 Sphinx 生成的 HTML
  • 获取列表框中所选项目的文本

    我试图在消息框中显示 listBox1 的选定项目 代码如下 int index string item foreach int i in listBox1 SelectedIndices index listBox1 SelectedIn
  • 使用 Spring 的 @RequestBody 并随后读取 HttpServletRequest.getInputStream()

    我正在使用 Spring 将请求的 JSON POST 数据映射到一个对象中 RequestBody注释和MappingJacksonHttpMessageConverter 但之后我想读取数据String表单进行一些额外的身份验证 但是当
  • 在 Haskell 代数数据类型中进行选择

    当键入X定义为 data X X sVal String I iVal Int B bVal Bool 我想要Int里面一个X值 如果有则为一 否则为零 returnInt X gt Int 我如何确定是哪种类型X论据returnInt i
  • 使视频视图中的视频加载速度更快

    我通过 URL 在视频视图中播放视频 一切正常 甚至视频也可以播放 但唯一的问题是视频需要近 10 秒才能开始播放 这可能会让用户感到厌烦 我尝试了不同的 URL 结果是一样的 视频是 360p 时长 6 秒 是默认的媒体播放器速度慢吗 我
  • 输入文本以跨越 Selenium/Python

    我尝试输入要跨越的文本来代替 示例文本 我正在使用 Selenium Python 但无法使用 send keys 方法来做到这一点 您还有其他想法吗 我该怎么做 我附上了 HTML 屏幕截图和应用程序屏幕截图 我尝试使用该代码 但不起作用
  • 引用 Perl 散列中的散列键链

    我有一个像这样存储数据的哈希值 our deviceSettings BB gt EUTRA gt DL gt CPC gt NORM PLCI gt CID gt 88 ULCPc gt NORM UL gt REFSig gt DSSH
  • KSQLDB Emit Final 不返回任何值

    我在 ksqldb 上进行了以下查询 如果我使用 EMIT CHANGES 它确实可以工作 但如果将其更改为 EMIT FINAL 它在窗口结束后不会返回任何值 CREATE TABLE sspc 3536660 v4 as select
  • 使用 Chunks 和 MultipartFileupload 进行文件上传

    使用块上传和 MultipartFile 上传是否相同 有什么区别 我尝试过使用 Multipartfile 上传 我的要求是上传一个50MB的appx文件到服务器而不让用户等待很长时间 大约需要 2 分钟 Chunks 和 Multipa