实现一个简单的文件下载 servlet [重复]

2024-01-03

我应该如何实现简单的文件下载servlet?

这个想法是通过 GET 请求index.jsp?filename=file.txt,用户可以下载例如。file.txt来自文件 servlet,文件 servlet 会将该文件上传给用户。

我可以获取到文件,但是如何实现文件下载呢?


假设您可以访问 servlet,如下所示

http://localhost:8080/myapp/download?id=7

我需要创建一个 servlet 并将其注册到 web.xml

web.xml

<servlet>
     <servlet-name>DownloadServlet</servlet-name>
     <servlet-class>com.myapp.servlet.DownloadServlet</servlet-class>
</servlet>
<servlet-mapping>
     <servlet-name>DownloadServlet</servlet-name>
     <url-pattern>/download</url-pattern>
</servlet-mapping>

下载Servlet.java

public class DownloadServlet extends HttpServlet {


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

         String id = request.getParameter("id");

         String fileName = "";
         String fileType = "";
         // Find this file id in database to get file name, and file type

         // You must tell the browser the file type you are going to send
         // for example application/pdf, text/plain, text/html, image/jpg
         response.setContentType(fileType);

         // Make sure to show the download dialog
         response.setHeader("Content-disposition","attachment; filename=yourcustomfilename.pdf");

         // Assume file name is retrieved from database
         // For example D:\\file\\test.pdf

         File my_file = new File(fileName);

         // This should send the file to browser
         OutputStream out = response.getOutputStream();
         FileInputStream in = new FileInputStream(my_file);
         byte[] buffer = new byte[4096];
         int length;
         while ((length = in.read(buffer)) > 0){
            out.write(buffer, 0, length);
         }
         in.close();
         out.flush();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实现一个简单的文件下载 servlet [重复] 的相关文章

  • SLF4J - Logback:如何在运行时配置记录器?

    我们在项目中使用 LogBack 我想根据一些数据库值配置记录器 即如果某个数据库值设置为 true 则记录器应同时使用文件和数据库附加程序 如果为 false 则记录器必须仅使用数据库附加程序 我还想保留使用静态最终记录器 因此我不会在每
  • 春天。使用java配置解决循环依赖而不使用@Autowired

    我有循环依赖和java配置 虽然使用 xml 配置解决它非常简单 但如果没有 Autowired 我无法使用 java 配置解决它 豆子 public class A private B b public B getB return b p
  • H2 - 多个应用程序访问同一个 H2 数据库

    我正在使用嵌入式数据库H2在 2 个网络应用程序中说WebApp1 and WebApp2 我运行 WebApp1 并执行一些查询来访问 H2 数据库 同时我运行 WebApp2 但它抛出异常H2 当前已被另一个进程使用 我的需求是 我应该
  • java.lang.unsatisfiedlinkerror 无法加载 amd 64 位 .dll ia 32 位

    当我尝试在 Eclipse 上运行我的项目时 出现以下错误 它在我开发它的计算机上运行良好 但当我将其导入我的笔记本电脑时 它不起作用 这个问题已经在本网站的其他地方提出过 这个问题的主要原因似乎是环境变量设置不正确 但我检查过 它们似乎是
  • 在 Java 中使用 Apache POI XWPF 在同一个 Word 文档中横向和纵向页面

    我正在尝试使用 Java 和 Apache POI 库创建一个包含一些横向页面和一些纵向页面的 Word 文档 我可以更改所有页面的方向 但有没有办法只更改其中某些页面的方向 我尝试过使用不同的部分和主体 但无济于事 目前我已经编写了一个函
  • 如何解析比 Java 中 NumberFormat 更严格的数字?

    我正在验证表单中的用户输入 我解析输入NumberFormat http docs oracle com javase 7 docs api java text NumberFormat html 但它是邪恶的 几乎允许任何事情 有没有办法
  • 将图像缩略图上传到服务器,而不上传整个图像

    据我所知 我在这里问的是不可能的 但我想无论如何我都会问 以防我遗漏了什么 假设您想让用户上传 JPG 图像 并且这些图像被缩放为较小的图标 并且原始图像始终被丢弃并且不再需要 有没有什么方法可以在大多数现代浏览器中普遍使用 让用户选择硬盘
  • 使用Optional作为类中的属性是一个好习惯吗? [复制]

    这个问题在这里已经有答案了 我读过一些关于目的的内容Optional 不幸的是我不记得在哪里 在Java 8中 我很惊讶作者没有提到使用Optional作为类中的属性 由于我在课堂上经常使用选项 我想知道这是否是一个好的做法 或者我可以更好
  • SwingWorker 在 Unsafe.park() 处挂起

    我有一个SwingWorker与后台服务器通信 然后更新JFrame 我正在调试我的应用程序并注意到即使在SwingWorker完成了它的工作 它的线程仍然存在 它挂在Unsafe park java lang Object 这是一个本机方
  • UiBinder 中的 gwt 按钮

    我需要创建一个按钮 所以它是一个带有图像的按钮 gwt with UiBinder 但我不确定如何进行 这是我的ui xml code
  • Maven:缺少工件 org.springframework:spring:jar:4.2.6

    我在 SpringToolSuite 中有一个动态 Web 项目 它被转换为 Maven 项目 我遇到问题 缺少工件 org springframework spring jar 4 2 6 我已经尝试清理 重建和运行该项目 它给 读取文件
  • 用dagger 2查看依赖注入

    我有一个自定义视图扩展TextView 我应该在哪里调用我的组件来注入视图 component inject customTextView 因此 我发现我需要在自定义视图的构造函数中添加注入 在所有视图中 或者使一个调用另一个 Exampl
  • 如何在Android Studio中关联.mp3文件

    我想根据列表视图项单击播放 mp3 文件 但是根据我的代码 我运行我的应用程序 出现此窗口 因此由于缺少音频选项 我真的不知道需要选择其中哪一个为了关联我的 mp3 文件 mainList setOnItemClickListener ne
  • 获取运行时生成的类的字节

    我正在使用一个 Java 框架 该框架使用自定义类加载器在运行时生成一些 代理 类 我想为任何这样的类获取自定义 ClassLoader 从 loadClass 返回的与该类对应的原始字节数组 这可能吗 我知道 如果一个类作为资源存在 那么
  • 为什么 Libgdx 的 Table 不接受缩放操作?

    我在 libgdx 库中使用 scene2d 在游戏中创建一些 UI 我使用了一个表格 我想在用户触摸时采取一些缩放操作以使按钮触摸有意义 当我使用任何其他 Actor 类型 例如 Group 并为其提供缩放操作时 它可以工作 但不能工作表
  • 如何在其他窗口之上生成独立的 JFileChooser 对话框?

    Like 其他一些人 https stackoverflow com questions 4161207 javavm windows 7 64bit jfilechooser not showing dialog box谁问过类似的问题
  • 使用 colt java lib 时出现“矩阵太大”异常

    我正在使用 cern colt matrix lib 进行稀疏矩阵计算 但似乎我一直遇到此错误 线程 main 中的异常 java lang IllegalArgumentException 矩阵太大 我认为这是因为构造函数在 nrows
  • Java可以进行进程监控吗?

    是否可以用Java编写一个在托盘中运行的应用程序 并且当启动某个应用程序时 它可以检测到它 我想对某些程序执行此操作 以了解我每周使用它们多长时间 我是 Java 新手 所以我不知道 Java 是否是最适合此操作的语言 或者它是否具有对操作
  • Selenium Webdriver 中的 IF 语句

    我想知道是否有人可以帮助我解决我正在尝试解决的问题以及 Java 中 Webdriver 的 If 语句 当登录到我正在测试的应用程序时 可以在主页之前进入安全问题页面 如果是新用户等 我希望测试中的代码做的是 如果出现安全问题页面 请填写
  • Ant 类路径和 junit.jar

    我有一个 build xml 它允许我运行 junit 测试 这是相关部分

随机推荐

  • 使用 Start-Process 捕获标准输出和错误

    PowerShell 中是否存在错误Start Process访问时的命令StandardError and StandardOutput特性 如果我运行以下命令 我不会得到任何输出 process Start Process FilePa
  • protobuf 版本之间的数据格式兼容性

    我想知道协议缓冲区的序列化数据格式是否在 protobuf 编译器和客户端库版本中保持不变 换句话说 我是否需要使用相同的编译器版本来生成 Python Java 和 C 类 这些客户端都需要使用相同版本的 protobuf 库吗 这个帖子
  • PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null, null) 尝试在 flutter 中使用 googleSignIn

    我已经阅读了我能找到的所有 Stackoverflow 问题和 github 问题 但没有任何效果 我正在尝试使用 GoogleSignIn 登录并验证日历范围 I have 使用 Android Studio 中的 gradle 任务来获
  • Typescript - 角度:静态注入器错误

    您好 我正在尝试在我的 Angular 项目中使用 socket io 我将展示三个文件 分别是组件文件 一个服务文件和一个模块文件 当我在组件文件中使用服务时 我会收到静态注入器错误 这是 错误 StaticInjectorError A
  • UISlider 控制 AVAudioPlayer

    我正在尝试在我的应用程序中实现一个小功能 我目前正在以 AVAudioPlayers 的形式播放声音 效果很好 我想添加的是使用 UISlider 控制声音的位置 当前时间 有没有一种简单的方法可以做到这一点 我看了一个苹果项目 但它相当混
  • 想要创建序列号

    我想生成序列号 e g I have NID ABD90 BGJ89 HSA76 而且我要 ID NID 1 ABD90 2 BGJ89 3 HSA76 我应该运行什么代码才能得到这个结果 请帮我 既然你标记了 SAS 我就用 SAS 来回
  • firefox从本地JS文件读取网页--访问受限URI被拒绝,代码:1012,nsresult:NS_ERROR_DOM_BAD_URI

    我的问题是 我有一个 html 文件 它实际上是 JS 程序 它读取网页并以自定义方式显示它们 即 它以不同的方式显示相同的内容 基本上 我创建 XMLHttpRequest 对象 然后 req open GET web page addr
  • 信用卡/借记卡号是数字还是整数?

    由于数字也可以是小数 这让我认为 CC 数字应该是整数 这是有道理的 因为我认为没有任何信用卡以 0 开头 而且它们都遵循相同的模式 4444333322221111 所以我猜它们是一个整数 但我不太确定国际卡是什么样的 有0开头的吗 Up
  • 线程总是在增加

    我刚刚安装了 SmartFoxServer 重新启动 Sfs 后 Dashboard 线程池中的线程数不断增加 直到下次重新启动才再次减少 如果我增加线程池限制 线程数就会增加到该限制 任何扩展或服务尚未运行 线程数在 10 分钟内增加到
  • 验证有效的 SQL 字符串

    C 中是否有一种方法 或现有库 不一定内置于 NET 中 来执行简单的 SQL 字符串验证 场景 构建更新语句以减少 SQL 负载与单个语句的负载 如果字符串构建做了一些 奇怪 的事情 例如以逗号结尾 我希望能够验证该字符串是否正确 如果您
  • jQuery Validator,以编程方式显示错误

    我可以做这样的事情 validator showErrors nameOfField ErrorMessage 这工作得很好 但是如果我尝试做这样的事情 var propertyName nameOfField var errorMessa
  • 适用于 Visual Studio 2010 项目的 Mercurial .hgignore

    不要混淆适用于 Visual Studio 2008 项目的 Mercurial hgignore https stackoverflow com questions 34784 mercurial hgignore for visual
  • PHP/MySQL:突出显示“SOUNDS LIKE”查询结果

    快速 MYSQL PHP 问题 如果使用普通搜索查询找不到结果 我将使用 不太严格 的搜索查询作为后备 调整如下 foreach find array as word clauses firstname SOUNDS LIKE word O
  • 在 Express 中的 URL 中使用多个参数

    我将 Express 与 Node 一起使用 并且我有一个要求 用户可以请求 URL 如下所示 http myhost fruit apple red 此类请求将返回 JSON 响应 上述调用之前的 JSON 数据如下所示 fruit ap
  • ASP.NET 与 jQueryUI:服务器端事件未触发

    我有一个 ASP NET 页面 该页面使用 jQuery UI 对话框 当用户单击按钮时 btnGo 在页面中 我将检查用户是否登录 如果未登录 我将显示 jQuery UI 对话框进行登录 我使用了这段代码
  • Runtime.getRuntime().maxMemory()计算方法

    这是代码 System out println Runtime max mb Runtime getRuntime maxMemory MemoryMXBean m ManagementFactory getMemoryMXBean Sys
  • 与露天 cmis 的连接

    我正在尝试使用配置参数连接露天 但出现错误 Config sessionParameters put SessionParameter USER admin sessionParameters put SessionParameter PA
  • bash 进程替换中的 GNU 并行参数占位符

    我有以下 GNU 并行命令 parallel gnu jobs 4 normalize by median py k 20 C 20 paired N 4 x 6e9 out pdom diginorm fq pdom fq gz 200b
  • 如何在ie8中使用包含函数的值设置OnClick属性?

    我的目标是改变onclick链接的属性 我可以成功完成 但生成的链接在 ie8 中不起作用 它在 ff3 中确实有效 例如 这适用于 Firefox 3 但不适用于 IE8 为什么 p a href click me a p 您不需要为此使
  • 实现一个简单的文件下载 servlet [重复]

    这个问题在这里已经有答案了 我应该如何实现简单的文件下载servlet 这个想法是通过 GET 请求index jsp filename file txt 用户可以下载例如 file txt来自文件 servlet 文件 servlet 会