文件下载

C#通过文件流下载文件 1、该方法传入的参数为需要下载的文件(需要包含绝对路径)/// /// 通过文件流下载文件 /// /// 文件名称(包含目录和后缀名) private void DownLoadPic(string url) { string sFileName = url ; F 阅读详情

       在web应用中实现文件下载的两种方式:

              ·超链接直接指向下载资源

              ·程序实现下载需设置两个响应头

·设置Context-type的值为:application/x-msdownload。Web服务器需要告诉留言器其输出的内容的类型不是普通的内容类型或者htnl文件,而是一个要存到本地的 下载文件

·web服务器希望留言器不直接处理响应的实体内容,而是由用户选择将相应的试题内容保存到一个文件中,这需要设置Content-Disposition报头。该报头制定了接收程序处理数据内容的方式,在http应用中只有attachment是标准方式,attachment表示要求用户干预。在attachment后面还可以指定filename参数,该参数是服务器建议浏览器将实体内容保存到文件中的文件名。在设置Content-dispositon之前一定要制定Content-Type

·因为要下载的文件可以是各种类型的文件,所以要将文件传送给客户端,其相应内容应该被当做二进制来处理,所以应该调用                               方法返回ServeltOutputStream 对象来向客户端写入文件内容。 

 

 

下载案例

       ListFileServlet.java:

读取某一个文件夹下的所有的文件,将其封装成一个file对象,多个file对象封装到一个集合对象中list,在将list对象存到一个作用于中才能传递给呈现所有的的资源的jsp页面中

 

packagecom.hbsi.servlet;

importjava.io.File;

import java.io.IOException;

import java.util.HashMap;

import java.util.Map;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

public classListFileServlet extends HttpServlet {

 

//主体功能:将某一个文件夹下的所有文件获取到,然后存入到一个集合map 键uuidname---值file对象中,在集合存到作用于中

       public void doGet(HttpServletRequestrequest, HttpServletResponse response)

                     throws ServletException,IOException {

 

              //得到保存上传文件的文件夹

              Stringsavepath=this.getServletContext().getRealPath("WEB-INF/upload");

              Map map=new HashMap();

             

              listFiles(new File(savepath),map);

             

              request.setAttribute("map",map);

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

       }

 

       //递归方法去遍历该文件夹下的所有文件以及子文件夹下的文件

       private void listFiles(File file,Mapmap){

             

              if(file.isFile()){//判断是否为文件

                     Stringuuidname=file.getName();

                     Stringrealname=uuidname.substring(uuidname.indexOf("_")+1);

                     map.put(uuidname,realname);

                    

             

              }else{

                     //若不是文件,而是文件夹

                     File[]files=file.listFiles();

                     for(File f:files){

                            listFiles(f,map);

                     }

              }

             

       }

      

       public void doPost(HttpServletRequestrequest, HttpServletResponse response)

                     throws ServletException,IOException {

              this.doGet(request, response);

       }

 

}

ListFile.jsp:

              呈现所有的下载资源,有超链接点击超链转到DownLoadServlet.java

              进行处理

 

<%@ page language="java" import="java.util.*"pageEncoding="utf-8"%>

<%@taglib uri="http://java.sun.com/jsp/jstl/core"prefix="c"%>

<%

String path =request.getContextPath();

String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01Transitional//EN">

<html>

  <head>

    <base href="<%=basePath%>">

   

    <title>list files</title>

   

    <meta http-equiv="pragma" content="no-cache">

    <meta http-equiv="cache-control"content="no-cache">

    <meta http-equiv="expires"content="0">   

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

    <meta http-equiv="description" content="This is my page">

    <!--

    <link rel="stylesheet" type="text/css"href="styles.css">

    -->

 

  </head>

 

  <body>

   <h2>下载资源列表</h2>

   <c:forEach items="${map }"var="me">

        <c:url value="/servlet/DownloadSevlet" var="fileAddr">

           <c:param name="filename" value="${me.key}"></c:param>

        </c:url>

        文件名:${me.value}&nbsp;&nbsp;<a href="fileAddr">下载</a><br>

   </c:forEach>

  

  </body>

</html>

 

 

 

 

DownLoadServlet.java

              具体的处理

       packagecom.hbsi.servlet;

 

import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.io.PrintWriter;

 

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

 

public class DownloadSevlet extends HttpServlet{

 

       //具体文件下载

       publicvoid doGet(HttpServletRequest request, HttpServletResponse response)

                     throwsServletException, IOException {

 

              //确定保存位置,找到用户选定的文件

              Stringuuidname=request.getParameter("filename");

              uuidname=newString(uuidname.getBytes("ISO8859-1"),"utf-8");

             

              Stringralname=uuidname.substring(uuidname.indexOf("_")+1);

              StringsavePath=getFileAddr(ralname);

             

              Filef=new File(savePath+"\\"+uuidname);

              if(f.exists()){

             

                     response.setContentType("application/x-msdownload");

                     Stringstr="attachment;filename="+java.net.URLEncoder.encode(ralname,"utf-8");

                     response.setHeader("Content-Disposition",str);

             

                     //创建一个输入流对象和指定的文件相关联

                     FileInputStreamin=new FileInputStream(f);

                     //response对象获取输出流

                     OutputStreamout=response.getOutputStream();

                     //从输入流对象中读取数据写入到输出流对象中

                     byte[]buff=new byte[1024];

                     intlen=0;

                     while((len=in.read(buff))>0){

                            out.write(buff,0,len);

                     }

              }else{

                     request.setAttribute("message","下载资源不存在!");

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

              }

       }

      

       privateString getFileAddr(String filename){

              intdir1=filename.hashCode() & 0x0f;

              intdir2=filename.hashCode() >>4 & 0x0f;

              StringsavePath=this.getServletContext().getRealPath("WEB-INF/upload")+"\\"+ dir1 + "\\" + dir2;

              returnsavePath;

       }

      

       publicvoid doPost(HttpServletRequest request, HttpServletResponse response)

                     throwsServletException, IOException {

 

              this.doGet(request,response);

       }

 

}

 

RK3588更新NPU驱动的方法 想要在 RK3588 上跑一下 deepseek 的大模型,发现目前的内核提供的 NPU 驱动比较低,无法支持新的大模型,所以需要更新一下我们的 NPU 驱动本次更新的NPU驱动仅适用于RK3588和RK3676系列。 阅读详情

相关推荐

CAB单片机开发指南

CAB单片机开发使用指南,IDE安装及烧录注意事项

Zoebuxiangtian的博客 1558

kkfileview(6)

2021SC@SDUSC

weixin_55637597的博客 1847

从零构建物联网数据中台:MQTT协议、Node.js服务、MongoDB与InfluxDB双存储及React可视化实战

本文详细介绍了从零构建物联网数据中台的完整实战方案。通过采用MQTT协议作为设备通信标准,结合Node.js搭建高并发数据处理服务,并创新性地使用MongoDB与InfluxDB双存储架构分别管理设备元数据与海量时序数据,最后利用React构建了实时数据可视化控制台。该架构有效解决了物联网项目中数据异构、查询性能低下等核心痛点,为构建高效、可扩展的物联网平台提供了清晰路径。

weixin_28432777的博客 288

Java文件下载

方法设置 Content-Type 字段的值,设置为application/octet-stream或application/xmsdownload,决定客户端服务器以那种方式来接受返回的信息。3. 通过 HttpServletResponse. getoutputStream方法返回 ServletOutputStream对象来向客户端写入附件文件的内容。filename=文件名”,浏览器通过附件的形式来获取到用户上传的文件。5. 获取输入流,指向需要下载的文件。

m0_73876302的博客 2687

彩票预测的可能性与算法分析

彩票作为一种以随机数为基础的赌博形式,吸引了大量希望一夜暴富的参与者。尽管许多人希望通过某种方式预测彩票结果,以增加中奖几率,但彩票预测的可能性依然是一个充满争议和误解的话题。本文将探讨彩票是否能够预测的理论依据,分析可能的预测算法,并解释这些算法为何在实际应用中难以奏效。

m0_38012434的博客 2万+

1.triton镜像使用

1)拉取镜像2)启动容器指定模型仓库时可以执行server下的./fetch_model.sh,见2.2部分GPU版本的启动CPU版本的启动区别只在于--gpus=1这个参数注意:docker19.03之前的版本使用gpu要指定显卡硬件名,docker19.03之后的需要安装nvidia-container-toolkit或nvidia-container-runtime安装之后要重启docker查看gpus参数是否安装成功重新执行我遇到了如下错误先使用非GPU版本的。

天启的博客 2077

http的结构

响应: 响应行:http版本和结果(200 ok) 响应头:context-type(绝大多数html) 响应体:html消息体 状态码: 200:成功 404:目标不存在(url错误) 500:网站内部错误 在servlet里返回的格式context-type默认为html,可以设置response的格式text/plain(纯文本)text/xml(xml文件)applicat...

mdjgold3的博客 1080

CODESYS做Modbus TCP主站踩坑记:从IP配置到数据映射的完整避坑指南

本文详细记录了在CODESYS中配置Modbus TCP主站的全过程,从IP配置到数据映射的常见问题及解决方案。重点解析了网络适配器选择、Slave ID误解、地址偏移陷阱等关键问题,并提供了实用的调试技巧和性能优化建议,帮助工业通信开发者高效避坑。

weixin_30642561的博客 625

文件的上传与下载---下载

Web应用中实现文件下载的两种方式    1.超链接直接指向下载资源。    2.程序实现下载需设置两个响应头。       1--设置Content-Type 的值为:application/x-msdownload。Web 服务器需要告诉浏览器其所输出的内容的类型不是普通的文本文件或 HTML 文件,而是一个要保存到本            地 的下载文件。       2--Web

1684

全新YOLO26有效涨点改进专栏目录 | 本专栏持续更新500+篇内容 | 包含各种卷积、主干网络、各种注意力机制、检测头、损失函数、小目标检测改进、二次创新模块、独家创新等几百种创新点改进

🔥《2026年YOLO26改进专栏》🔥 🚀持续更新500+最前沿创新改进点(顶会顶刊论文/独家创新策略),涵盖主干网络、各种卷积、注意力机制、检测头等模块,助力科研论文发表与模型性能提升,支持检测/分割/分类任务。订阅即获完整可运行项目,提供专业QQ答疑群,适合科研发论文(SCI/CCF/核心)及工业应用(PCB/医学/遥感检测)。专栏价格将逐步上涨,早订更优惠! ⭐特色:非计算机专业友好、模块可自由组合、全网独家创新;📌适用:研究生大论文和小论文创新、小目标检测、多领域科研应用,满足不同研究需求。

Ai缝合怪、助力小伙伴高效发论文 5152

MATLAB使用贝叶斯网络bnt工具箱:使用手册详解

MATLAB使用贝叶斯bnt网络工具箱:使用手册详解

WW、forever的博客 2676

文件的下载详解及案例解析

文件的下载详解及案例解析 一.         Web应用中实现文件下载的两种方式 •   超链接直接指向下载资源 •   程序实现下载需设置两个响应头: •  设置Content-Type 的值为:application/x-msdownload。Web 服务器需要告诉浏览器其所输出的内容的类型不是普通的文本文件或 HTML 文件,而是一个要保存到本地的下载文件。 •  Web服务器希

张晓丛的专栏 2508

探索 .NET 多版本兼容的精美 WinForms UI 控件库:ReaLTaiizor

你可以根据需要修改主题的颜色方案。// 示例:修改主题颜色设置主色和次色。应用到中。通过继承和重写控件的方法,可以实现自定义样式。// 示例:自定义 MetroButton 样式// 自定义绘制逻辑创建类继承自。重写OnPaint方法,添加自定义绘制逻辑。

墨夶的博客 1509

Java下载文件的几种方式含本地文件下载

1.以流的方式下载. public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的文件的路径。 File file = new File(path); // 取得文件名...

海那边天哭了 8610

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

python 文件下载、大文件下载、异步批量下载 教程

原文来自Python实用宝典:python 文件下载、大文件下载、异步批量下载 教程 按照不同的情况,Python下载文件可以分为三种: 小文件下载 大文件下载 批量下载 python 小文件下载 流程:使用request.get请求链接,返回的内容放置到变量r中,然后将r写入到你想放的地方。 以下载上述流程图为例子: 运行完毕后,它将会被保存到当前文件夹的new文件夹里。 python ...

Python实用宝典网 1939

Camera2Demo

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

【文件下载】java下载文件的几种方式(本地下载、从网络上下载、在线浏览)

原文地址:https://www.cnblogs.com/sunny3096/p/8204291.html 1.以流的方式下载. public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的文件的路径。 ...

TRX的博客 6078

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

如何将QQ群文件快速下载,怎么快速下载QQ中的文件,QQ群文件下载

这是王秀秀的第18篇博客 直接想看怎么下载,可以直接略过下面这段废话 点击正文开始↓正文开始 生活中我们肯定会遇到传输文件的问题,一般我们传输文件,下载文件一般都用某云盘了,可是它的德行大家也都知道。下载速度快的一批。 所以的我就想用用QQ来传输文件,不得不说啊,????爸爸真的还是听良心的。我将我的一个1.5G大文件发送给了盆友,然后点击离线发送,发现这速度真的没得说真的快,可是当我发第二个的时候,突...

weixin_43866499的博客 1万+

okhttp下载文件 Java下载文件 javaokhttp下载文件 下载文件 java下载 okhttp下载 okhttp

也可以用 UrlConnetcion或者apache。示例 http客户端 用的是。

半只 3450

文件下载---文件流下载文件

使用文件流方式直接下载文件

大香蕉的博客 4109

axios下载大文件_python 文件下载、大文件下载、异步批量下载 教程

原文来自Python实用宝典:python 文件下载、大文件下载、异步批量下载 教程按照不同的情况,Python下载文件可以分为三种:小文件下载大文件下载批量下载python 小文件下载流程:使用request.get请求链接,返回的内容放置到变量r中,然后将r写入到你想放的地方。以下载上述流程图为例子:运行完毕后,它将会被保存到当前文件夹的new文件夹里。python 大文件下载我们在小文件下载...

weixin_39748445的博客 194

web下载文件,前端下载二进制文件,vue axios下载文件,前端文件下载,ajax下载文件

通过后端接口下载excel文件,后端没有文件地址,返回二进制流文件 axios({ method: 'post', url: url, // 请求地址 data: options, // 参数 responseType: 'blob' // **表明返回服务器返回的数据类型** }).then( response => { ...

张宇的博客 663

【文件下载】Java下载文件的几种方式

1.以流的方式下载 public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的文件的路径。 File file = new File(path); // 取得文件名。 String filename = file.getName(); /

男人要霸气的博客 771

thinkphp 文件下载 文件下载php

THinkPHP1.5中文件的下载 用到的系统类库文件是Http.class.php,位于ThinkPHP\Lib\ORG\Net目录下,类名Http,其中有静态方法 static function download ($filename, $showname=”,$conte

万维网 7935

文件 - 04 下载文件: 根据文件下载链接下载文件

代码】文件-04根据文件下载链接下载文件。

你今天真好看呀 1281

axios下载大文件_python 小文件下载、大文件下载、异步批量下载 教程

按照不同的情况,Python下载文件可以分为三种:小文件下载大文件下载批量下载python 小文件下载流程:使用request.get请求链接,返回的内容放置到变量r中,然后将r写入到你想放的地方。以下载上述流程图为例子:运行完毕后,它将会被保存到当前文件夹的new文件夹里。python 大文件下载我们在小文件下载的时候,是将文件内容暂存到变量里,大家想想,下载大文件的时候还这样做会有什么问题? ...

weixin_39717121的博客 253

浏览器通过下载来下载文件

如图:通过以下方式下载 在jsp页面访问地址: //执行模版下载    function downloadTemplate(){         window.location.href = "download/downloadServlet.do";     };  servlet请求: package com.xjw.bmp.servle

mexican_jacky的专栏 1864
上一篇: 上传文件的一些细节:
下一篇: hibrnate
ping159
博客等级 码龄15年 6粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值