String filename = request.getParameter("filename");
//得到想客服端输出的输出流
OutputStream outputStream = response.getOutputStream();
//输出文件用的字节数组,每次向输出流发送600个字节
byte b[] = new byte[600];
//要下载的文件
File fileload=new File("C://ExportExecl/"+filename+"");
//客服端使用保存文件的对话框
response.addHeader("content-disposition", "attachment;filename="
+ java.net.URLEncoder.encode(filename, "UTF-8"));
//通知客服文件的MIME类型
response.setContentType(getServletContext().getMimeType(filename));
//通知客服文件的长度
long fileLength = fileload.length();
String length = String.valueOf(fileLength);
response.setHeader("Content_length", length);
//读取文件,并发送给客服端下载
FileInputStream inputStream = new FileInputStream(fileload);
int n = 0;
while((n=inputStream.read(b))!=-1){
outputStream.write(b,0,n);
}
//清除缓存
if(fileload.exists()){
fileload.delete();
System.out.println("已清除服务器缓存!");
}
文件下载关键代码
时间: 2024-10-28 11:34:24
文件下载关键代码的相关文章
easyui-datagrid通过action从数据库获取数据的关键代码
实际上是结合struts2来从数据获取json格式的数据. 关键代码: GetUserAction.java代码 package com.log.control; import java.io.IOException; import java.io.StringWriter; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apa
自定义EL表达式,将对象转成json格式,关键代码
做javaweb开发的最常用的一个东西el表达式,这个东西是个很好用的东西,但有些时候我们处理复杂的字符串操作,就有些相形见绌了,这个时候就需要用自定义的方法去实现更多简洁方便的事情. 下面自定义一个将对象转成json字符串的自定义el表达式用来讲解这个自定义的过程: ElFunctions.java import net.sf.json.JSONObject; public class ElFunctions{ public static String toJsonString(Object
PHP 弹出文件下载 原理 代码
/** * @author default7<[email protected]> * @description 演示PHP弹出下载的原理 * * @param $file_name */ function downFile($file_name) { $file_path = "/tmp/" . $file_name; $buffer = 102400; //一次返回102400个字节 if (!file_exists($file_path)) { echo "
windows下多线程同步(利用事件对象,互斥对象,关键代码段)实现
一:利用事件实现线程同步 1.createthread函数的用法 hThread = CreateThread(&security_attributes, dwStackSize, ThreadProc,pParam, dwFlags, &idThread) ; HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, DWORD dwStackSize, LPTHREAD_START_ROUTINE lpStartAdd
Android中弹出对话框,AlertDialog关键代码
写在这里便于以后查看. Android中弹出对话框的关键代码: 1 btn01.setOnClickListener(new OnClickListener() { 2 3 @Override 4 public void onClick(View v) { 5 Toast.makeText(musicActivity.this, "tanchu", 100).show(); 6 //以下是弹出对话框的关键代码, 7 AlertDialog.Builder b = new AlertDi
VC++深入详解——第16章:线程同步,关键代码段
关键代码段,也称为临界区,工作在用户方式下,它是指一小段代码,在代码能够执行前,它必须独占对某些资源的访问权. CRITICAL_SECTION型结构体. 关键代码段的相关函数: InitializeCriticalSection函数: 进入关键代码段前需要进行初始化. EnterCriticalSection函数: 获得临界区对象的所有权,如果所有权赋予了调用线程,那么就返回,否则会一直等待. LeaveCriticalSection函数: 释放指定的临界区的所有权. DeleteCritic
iPhone开发地图线路关键代码分享
因为接触到了这么一个项目,所以进行了这个功能的深入了解,比较忙,所以把关键代码贴在这里,如果有问题,请留言. 效果图如下:可能有偏移,这里不进行解决. 用到的几个方法代码如下: 使用google 地图 api 3.0协议解析两个经纬度,得到行进路线. 比较重要的一个方法: } 这个是基本的绘制线路的方法.最后生成一张图片. 地图居中显示 #pragma mark mapView delegate functions- (void)mapView:(MKMapView *)mapView regi
appium在真机上运行IOS实例要注意的几点:包括python和java运行log 和部分关键代码
最近在研究appium对于IOS的自动化测试,发现在真机上运行appium提供的开源的例子遇到了几个block,询问了一个这个方便面的高手并且总结网上搜到的帖子,现在综合一下. appium 在模拟器中跑,只需要注意app=path appium真机上运行:1:运行的时候要将APP安装到真机上面 2:运行的时候,不能再开instrument 3:命令行里面启动的时候,参数写错了应该是 appium -U 3d2cad7288a64a5445aa98a2cc220132f2cddd1c --app
分享非常有用的Java程序(关键代码)(七)---抓屏程序
原文:分享非常有用的Java程序(关键代码)(七)---抓屏程序 import java.awt.Dimension; import java.awt.Rectangle; import java.awt.Robot; import java.awt.Toolkit; import java.awt.image.BufferedImage; import javax.imageio.ImageIO; import java.io.File; ... public void captureScre