永发信息网

java servlet中下载xml类型文件

答案:2  悬赏:0  手机版
解决时间 2021-04-07 17:26
在servlet中生成了一个xml文件,重定向到文件,想让浏览器提示另存为下载该xml文件,但是现在浏览器直接把这个xml打开了,请问该怎么设置一下,不让浏览器打开而是提示保存,另存为那种形式
最佳答案
重定向的,不好处理。。。。。。。自己使用流处理

response.setContentType(fileminitype);
response.setHeader("Location",filename);
response.setHeader("Cache-Control", "max-age=" + cacheTime);
response.setHeader("Content-Disposition", "attachment; filename=" + filename); //filename应该是编码后的(utf-8)
response.setContentLength(filelength);
OutputStream outputStream = response.getOutputStream();
InputStream inputStream = new FileInputStream(filepath);
byte[] buffer = new byte[1024];
int i = -1;
while ((i = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, i);
}
outputStream.flush();
outputStream.close();
inputStream.close();
outputStream = null;
全部回答
    public map fileupload_java(httpservletrequest request,string uploadpath) {      map param = new hashmap();      try {             // 参数或者文件名             string name = null;             // 参数的value             string value = null;             // 读取的流是否为文件的标志位             boolean fileflag = false;             // 要存储的文件。             file tmpfile = null;             // 上传的文件的名字             string fname = null;             fileoutputstream baos = null;             bufferedoutputstream bos = null;             int rtnpos = 0;             byte[] buffs = new byte[bufsize * 8];             // 取得contenttype             string contenttype = request.getcontenttype();             int index = contenttype.indexof("boundary=");             string boundary = "--" + contenttype.substring(index + 9);             string endboundary = boundary + "--";             // 从request对象中取得流。             servletinputstream sis = request.getinputstream();             // 读取1行             while ((rtnpos = sis.readline(buffs, 0, buffs.length)) != -1) {                 string strbuff = new string(buffs, 0, rtnpos);                 if (strbuff.startswith(boundary)) {                     if (name != null && name.trim().length() > 0) {                         if (fileflag) {                             bos.flush();                             baos.close();                             bos.close();                             baos = null;                             bos = null;                             param.put(name, tmpfile.getabsolutepath());                         } else {                             string paramvalue = param.get(name);                             paramvalue += ","+ value;                             param.put(name, paramvalue);                         }                     }                     name = new string();                     value = new string();                     fileflag = false;                     fname = new string();                     rtnpos = sis.readline(buffs, 0, buffs.length);                     if (rtnpos != -1) {                         strbuff = new string(buffs, 0, rtnpos);                         if (strbuff.tolowercase().startswith("content-disposition: form-data; ")) {                             int nindex = strbuff.tolowercase().indexof("name=\"");                             int nlastindex = strbuff.tolowercase().indexof("\"", nindex + 6);                             name = strbuff.substring(nindex + 6, nlastindex);                         }                         int findex = strbuff.tolowercase().indexof("filename=\"");                         if (findex != -1) {                             fileflag = true;                             int flastindex = strbuff.tolowercase().indexof("\"", findex + 10); //                            fname = strbuff.substring(findex + 10, flastindex);                             fname = new string(strbuff.substring(findex + 10, flastindex).getbytes(),"gbk");                             fname = filel.getfilenamewithoutseprater(fname);                             if (fname == null || fname.trim().length() == 0) {                                 fileflag = false;                                 sis.readline(buffs, 0, buffs.length);                                 sis.readline(buffs, 0, buffs.length);                                 sis.readline(buffs, 0, buffs.length);                                 continue;                             }else{                                 fname = filel.getfilenametime(fname);                                 sis.readline(buffs, 0, buffs.length);                                 sis.readline(buffs, 0, buffs.length);                             }                         }                     }                 } else if (strbuff.startswith(endboundary)) {                  if (name != null && name.trim().length() > 0) {                         if (fileflag) {                             bos.flush();                             baos.close();                             bos.close();                             baos = null;                             bos = null;                             param.put(name, tmpfile.getabsolutepath());                         } else {                             string paramvalue = param.get(name);                             paramvalue += ","+ value;                             param.put(name, paramvalue);                         }                     }                 } else {                     if (fileflag) {                         if (baos == null && bos == null) {                             tmpfile = new file(uploadpath + fname);                             baos = new fileoutputstream(tmpfile);                             bos = new bufferedoutputstream(baos);                         }                         bos.write(buffs, 0, rtnpos);                         baos.flush();                     } else {                         value = value + strbuff;                     }                 }             }         } catch (ioexception e) {             e.printstacktrace();         }         return param;     }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
枣庄英雄联盟特权网吧是哪个青苹果
45kw消防泵用多大电缆35 还是50?
山西附近有什么历史时期留下的战争遗址
判断题一个两位数乘1的积一定是两位数.
脸部颧骨及下方脸颊感觉丝丝的凉,像是涂抹了
湘乡几家超市可以和步步高媲美?
请问:为什么没有人把侠盗猎车手之圣安地列斯
做BIM的类型有哪些?
Mid-Autumn Day是什么意思
我国四大神话故事和四大民间传说
瑞康盲人保健按摩中心我想知道这个在什么地方
霍雨浩和王冬儿在学院里手牵手,被一个老师发
巴提玛库都克在什么地方啊,我要过去处理事情
有没有比追击者还恐怖的电影
VB.NET编程
推荐资讯
实习期满了怎么考试
三星s7系统升不了级
f(x)=sinωx+cos(ωx+π/6)的图像上相邻两条
x一七分之五等于二十一分之五这道题怎么写
为什么手机淘宝上的旺旺里传不上去图片?
求工程上税怎么上?
红叶幕布1540×2030是多少寸
请问宁波大学附近有没有医院呢?
My father made a modle plane to keep me ha
女人农村社保多大岁能拿钱?
在归元寺数罗汉,数得第四百一十七最无比尊者
28到32岁的女人喜欢什么样的男人我29单身
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?