Web 简单文件下载

  最近开始做第一个项目,在做文件下载的方面遇到了一点问题,现在在这里分享一下。

  对于文件下载,我一开始的做法是读取了数据库中的需要下载的文件的相对于工程的相对路径后赋值给html代码的a标签的href属性,但是在测试的时候发现像txt、docx这类文本文档并不是提示下载,而是将相应的文件直接打开了,而由于编码的不同,就出现了满屏乱码这种情况,后来了解到是浏览器对这类简单的文件,它本身能够解析的文件类型都会直接打开显示,只有那些浏览器无法识别解析的文件类型才会提示用户下载,后来我的解决方法是写了一个下载的servlet类,代码如下:

public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        PrintWriter out;
        //接收参数,path表示当前文件相对项目根目录的相对路径
        String path = request.getParameter("path");
        //获取文件的绝对路径
        String filepath = request.getSession().getServletContext().getRealPath(path);
        File file = new File(filepath);
        //判断该文件是否存在
        if(!file.exists()) {
            out = response.getWriter();
            out.println("<script>alert(\"文件不存在!\");window.history.back()</script>");
            out.close();return;
        }
        response.addHeader("content-disposition", "attachment;filename=" + path);
        IOUtils.copy(new FileInputStream(file), response.getOutputStream());
    }
时间: 2024-10-16 23:04:28

Web 简单文件下载的相关文章

Servlet实现web站点文件下载功能示例

前段时间事情比较多,导致二月份没有记录自己的学习情况.最近接触了servlet,参考韩老师的教程自己写了一个web站点文件下载的小项目,该项目中还加入了简单的反盗链技术. 1.首先创建一个SharedFilesServlet用于返回一个文件分享界面 1 package com.hyman.view; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 6 import javax.servlet.ServletExcep

生产环境中的PHP WEB 简单架构

使用三台虚拟机器, Ubuntu1(nginx) 192.168.226.128 Ubuntu2(php-fpm+memcached)192.168.226.132 CentOS(MySQL)192.169.226.130 PHP 框架使用CakePHP,这个是很常用的MVC 框架,基于事件的分发模型 当然需要注意的是框架代码要部署在php-fpm机器上,需要在nginx 中配置的配置如下 余下的内容: 1. CakePHP 框架代码 2. PHP 内核 3. Nginx内核 4. 数据库设计模

asp.net web 简单使用cookie

cookie的简单使用 1 public partial class Login:System.Web.UI.pag 2 { 3 public string LoginUserName{get;set;} 4 protected void Page_Load(object sendet,EventArgs e) 5 { 6 if(IsPostBack) 7 { 8 string userName=Request.Form["txtName"]; 9 Response.Cookies[&

[Java.web]简单计算器

项目的  WebRoot 目录下的 calculator.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML> <html> <head> <title>计算结果</title> </head> <body> <jsp:us

Asp.net core与golang web简单对比测试

最近因为工作需要接触了go语言,又恰好asp.net core发布RC2,就想简单做个对比测试. 下面是测试环境: CPU:E3-1230 v2 内存:16G 电脑有点不给力 操作系统:Centos7.0(虚拟机) asp.net core rc2 golang v1.7beta1 下面是各自的代码: go package main import ( "fmt" "net/http" ) func main() { fmt.Println("This is

web简单连接html文件测试

Web工程: 条件: apache-tomcat-6.0.20(文件夹/7.0)=======位于E盘 标题:链接服务器 步骤: 第一步:打开apache-tomcat-6.0.20-bin-startup服务器-任意浏览器测试-输入==http://localhost:8080/- 出现 如果出现则表名连接失败; 第二步:在apache-tomcat-6.0.20下面-webapps-新建项目(project1)-新建(index)html文件 第三步:在浏览器里面测试: http://loc

屏幕測试亮点,新买了一个显示器,使用web简单的測试下了亮点

1,购买了一个新的显示器 趁着双11的时候价格廉价.入手了一个显示器. http://serve.netsh.org/pub/dead_pixel.bin 滚动下就能够换颜色了.把chrome最大化,简单測试了下,没有亮点坏点. 2.双显示器 程序开发还是有两个屏幕效率比較高. 假设是3个屏幕的话.比較不easy找到鼠标,还是两个好. 尤其是敲代码.看代码,能够显示很多其它内容. 显示器和苹果miniDP转DP接口.(双十一优惠222) http://item.jd.com/935350.htm

java web简单权限管理设计

一套最基本的权限管理包括用户.角色.资源. 数据库设计 我的设计如下: 用户:user 角色:role 用户-角色:user_role 资源:resource(包括上级菜单.子菜单.按钮等资源) 角色-资源:role_resource 标准的权限管理系统设计为以上5张表. 注:用户.用户-角色我就不做说明了,这两个是很简单的两块,用户的crud,以及为用户分配角色(多对多的关系)稍微琢磨一下就清楚了,下面都是针对为角色分配权限的实现 后台实现 展示层采用ztree树 <%@ page conte

JAVA web简单的登录界面jsp实现

此次试验所用到的软件是myeclipse10,tomcat7,Dreamweaver,sqlserver2008数据库.可以实现用户使用用户名和密码登录.如果登录成功,页面会显示登录成功,如果密码错误,则页面会显示登录失败.连接数据库使用的事javabean方法,需要实现下载好sqlserver2008的驱动程序,在web project文件夹下的src文件夹下新建包"Bean",并在此包下新建"DBBean.java"文件. DBBean.java文件代码如下: