首页 > 其他分享 >处理 multipart/form-data

处理 multipart/form-data

时间:2024-09-04 10:28:39浏览次数:1  
标签:1024 form getWriter multipart File println data response

multipart/form-data Content Type,专门用于处理包含二进制数据(如图片、视频或文档)和常规文本数据的表单,通常用来上传文件。

要处理 multipart/form-data 请求,我们必须用 @MultipartConfig 或在 web.xml 中配置 Servlet。

@MultipartConfig 提供了各种参数来控制文件上传行为,如 location(临时存储目录)、maxFileSize(单个上传文件的最大大小)和 maxRequestSize(整个请求的最大大小):

@MultipartConfig(fileSizeThreshold = 1024 * 1024, 
  maxFileSize = 1024 * 1024 * 5, 
  maxRequestSize = 1024 * 1024 * 5 * 5)
public class FileUploadServlet extends HttpServlet {
    // ...
}

在 Servlet 中,我们可以使用 getPart(String name) 方法获取 multipart/form-data 中特定 Part(部分)的信息,或者使用 getParts() 方法获取所有 Part 的信息。Part 接口提供了访问文件名、内容类型、大小和输入流等详细信息的方法。

使用 POST 请求上传文件示例如下:

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
  throws ServletException, IOException {

    String uploadPath = getServletContext().getRealPath("") + 
      File.separator + UPLOAD_DIRECTORY;
    File uploadDir = new File(uploadPath);
    if (!uploadDir.exists()) {
        uploadDir.mkdir();
    }

    Part filePart = request.getPart("file");
    if (filePart != null) {
        String fileName = Paths.get(filePart.getSubmittedFileName())
          .getFileName().toString();
        if(fileName.isEmpty()){
            response.getWriter().println("Invalid File Name!");
            return;
        }
        if(!fileName.endsWith(".txt")){
            response.getWriter().println("Only .txt files are allowed!");
            return;
        }

        File file = new File(uploadPath, fileName);

        try (InputStream fileContent = filePart.getInputStream()) {
            Files.copy(fileContent, file.toPath(), 
              StandardCopyOption.REPLACE_EXISTING);
        } catch (IOException e) {
            response.getWriter().println("Error writing file: " + 
              e.getMessage());
            return;
        }

        response.getWriter()
            .println("File uploaded to: " + file.toPath());
    } else {
        response.getWriter()
            .println("File upload failed!");
    }
}

标签:1024,form,getWriter,multipart,File,println,data,response
From: https://www.cnblogs.com/codechange/p/18395948

相关文章

  • 基于Mindformers+mindspore框架在升腾910上进行qwen-7b-chat的lora微调
    基于Mindformers+mindspore框架在昇腾910上进行qwen-7b-chat的8卡lora微调主要参考文档:https://gitee.com/mindspore/mindformers/tree/r1.0/research/qwenSTEP1:环境准备我使用mindformers官方提供的docker镜像进行微调,下载指令:dockerpullswr.cn-central-221.ovaijisuan.......
  • LSTM+transformer+稀疏注意力机制(ASSA)时间序列预测(pytorch框架)
    LSTM+transformer+稀疏注意力机制transformer,LSTM,ASSA注意力首发原创!纯个人手打代码,自己研究的创新点,超级新。可以发刊,先发先的,高精度代码。需知:好的创新性模型可以事半功倍。目前太多流水paper,都是旧模型,老师已经审美疲劳,很难发好一点的刊,这种模型很新,让paper审核老师眼......
  • JobSystem使用范例二:动态添加移除Transform单位,寻找最近目标
    如何试用TransformAccessArray|添加/移除Transform到TransformAccessArray中执行   以下是寻找最近目标的示例。usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.Jobs;usingUnity.Mathematics;usingUnity.Jobs;usingUnity.Collect......
  • Datawhale X 李宏毅苹果书AI夏令营 Task3打卡
    3.7批量归一化批量归一化的核心思想在于把误差函数图像的“山铲平”,在某些误差表面上不同参数方向的变化率可能差别很大,此时在损失函数上找到临界点会比较困难比如对一个简单的线性函数\(y=\sigma(w_1\timesx_1+w_2\timesx_2+b)\)来说,我们考虑对于参数\(w_1,w_2\)来说,......
  • django Form组件校验流程
    django中Form组件字段校验顺序:先字段内部校验,然后钩子方法校验:fromdjango.shortcutsimportrender,redirectfromdjango.core.validatorsimportRegexValidatorfromdjangoimportformsfromapp01.utilss.mdyimportmdfromapp01.modelsimportAdministrator,Custom......
  • 基于VUE2-dataV和echarts实现的可视化大屏,百分比适配PC端
    可视化平台中,数据分别通过仪表盘、环状图、柱形图、曲线图、滚动表格等多种形式展示数据变化。可视化平台大致分为左、中、右三部分,左侧由能耗总览、耗能占比、库存预警构成,中间由数据总览、销售计划完成率构成,右侧由销售统计、销售排名(TOP8)、生产统计构成。平台右上角动态......
  • 高创新 | Matlab实现Transformer-GRU-SVM多变量时间序列预测
    高创新|Matlab实现Transformer-GRU-SVM多变量时间序列预测目录高创新|Matlab实现Transformer-GRU-SVM多变量时间序列预测效果一览基本介绍程序设计参考资料效果一览基本介绍1.Matlab实现Transformer-GRU-SVM多变量时间序列预测,Transformer+门控循环单......
  • Tape-out Checklist Form
    Tape-outChecklistFormCheckItemDescriptionYes/NoNote设计文档检查设计文档完善且与最新设计版本保持一致验证文档检查验证文档完善且记录了全部验证用例及结果验证范围检查验证条目已经覆盖了所有的电路模块以及整体电路功能覆盖率检查数字设......
  • 第二天学习笔记:Datawhale X 李宏毅苹果书 AI夏令营
    今天学的有些小兴奋,终于解锁了很多熟悉但不明就里的术语。天呢,原来ReLU是“修正线性单元”的意思!RectifiedLinearUnit!但是呢,也有不大对付的地方:好几个地方前言不搭后语。容我一一道来。今天就顺序边读边记:线性模型(linearmodel)==把模型输入的特征x乘上一个权重,再加......
  • 第一篇献给Datawhale
    写今天的学习笔记之前,我要好好表达对Datawhale的感谢。记不清这是第几次跟着组织学习了。虽然也只是从懵懂小白0.1到萌萌小白0.2,虽然很多词汇还都不懂,但没有Datawhale的学习氛围和小伙伴的积极表现,我的这一点点进步也可能不会有。正文开始:各种词汇定义:模型(model)== 带有未......