服务器以流的形式返回一个本地文件给请求方
来源:互联网 发布:关于c语言的书那本最好 编辑:程序博客网 时间:2024/06/05 03:34
服务器以流的形式返回一个本地文件给请求方
对于请求方来说,下载来的文件是透明的,就是这个文件的格式和名字都是需要重命名的,这是以流的形式下载文件的一个特点。
import java.io.BufferedReader;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.HttpURLConnection;import java.net.URL;import java.text.SimpleDateFormat;import java.util.Date;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.codec.digest.DigestUtils;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;public class FileTest {public static void main(String [] args){FileTest ft=new FileTest();ft.test1();}//----------------------------test1public void test1(){ActionContext ctx = ActionContext.getContext();HttpServletRequest request = (HttpServletRequest)ctx.get(ServletActionContext.HTTP_REQUEST); HttpServletResponse response = (HttpServletResponse)ctx.get(ServletActionContext.HTTP_RESPONSE);//声明流对象FileInputStream fis=null;String s="";try {//创建流对象fis=new FileInputStream("d:\\a\\123.txt");//读取数据,并将读取到的数据存储到数组中byte[] data=new byte[1024];//数据存储的数组int i=0;//当前下标//读取流中的第一个字节数据int n=fis.read();//依次读取后续的数据while(n!=-1){//未到达流的末尾//将有效数据存储到数组中data[i]=(byte)n;//下标增加i++;//读取下一个字节的数据n=fis.read();}//解析数据s=new String(data,0,i);//输出字符串System.out.println(s);} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{try {fis.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}response.setCharacterEncoding("UTF-8");// 解决接受端的中文乱码问题PrintWriter printWriter;try {printWriter = response.getWriter();printWriter.write(s);// 返回的json串printWriter.flush();printWriter.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//----------------------------test1//____________________________test2public void test2() throws Exception{String getURL="http://192.168.1.104:8080/struts2go/fileTest/test1.action;URL getUrl = new URL(getURL); // 根据拼凑的URL,打开连接,URL.openConnection函数会根据URL的类型,// 返回不同的URLConnection子类的对象,这里URL是一个http,因此实际返回的是HttpURLConnectionHttpURLConnection connection = (HttpURLConnection) getUrl.openConnection();// 进行连接,但是实际上get request要在下一句的connection.getInputStream()函数中才会真正发到// 服务器connection.setConnectTimeout(25000);connection.setReadTimeout(25000);connection.connect(); int status = connection.getResponseCode(); if (status == 200) { DataInputStream in = new DataInputStream( connection.getInputStream()); DataOutputStream out = new DataOutputStream(new FileOutputStream("d:\\a\\新文件.zip")); byte[] buffer = new byte[4096]; int count = 0; while ((count = in.read(buffer)) > 0) { out.write(buffer, 0, count); } out.close(); in.close(); } else { String strResponse = "error"; } connection.disconnect();}//____________________________test2}
0 0
- 服务器以流的形式返回一个本地文件给请求方
- 初涉Ajax,以post或get方法发送数据,以json或xml形式接收服务器返回的请求
- 接口流以字符串的形式返回
- /*以流的形式获取请求参数*/
- 使用一个简单的python脚本将一个本地文件以码流的形式,通过UDP协议发送到对端:
- 以Base64字符串形式上传文件——在web浏览器端使用原生Javascript及Ajax读取本地文件并发送请求到服务器
- java后台以json字符串的形式,将数据返回给$.ajax的问题总结
- Ajax发送请求后,将返回页面以弹出层(layer)的形式展现
- 接受xml字符串+以流的形式返回信息
- 如果以一个树状的形式返回一个UIView的所有子视图
- 前端jsp以数组形式提交数据给服务器
- 以脚本的形式使用ftp服务器
- 以post方式携窗体等参数向服务器发送请求 发出去的字节流 返回的内容
- 通过Ajax请求后台数据,返回JSONArray(JsonObject),页面(Jquery)以table的形式展示
- Java调用Linux下的shell命令并将结果以流的形式返回
- servlet 内部调用其他服务器的请求结果后,合并返回给用户
- 拆分数据库字段中字符串,以表的形式返回
- 使用mysql_fetch_row()以数组的形式返回查询结果
- Oracle列转行函数listagg和vmsys.vm_concat
- android 布局的一些注意要点
- srt,ass,ssa三种字幕的区别
- ajax跨域问题
- 《Java编程思想》学习笔记10——文件和目录常用操作
- 服务器以流的形式返回一个本地文件给请求方
- jquery禁用右键功能和f5刷新
- android swipeRefreshLayout 下拉刷新 google官方组件
- curl设置cookie
- Linux设置ssh免密码登录
- CRS-2728: A resource type with the name 'ora.daemon.type' is already registered
- 最新隐马尔可夫模型HMM详解
- 最短路径问题
- web前端的国际化 i18n