servlet文件下载 如何关闭空白页面

servlet文件下载 如何关闭空白页面,第1张

out.print("<script>function(){setTimeOut("self.close()"让谈锋,10000)}</坦晌script>")

这样是等待10秒钟 关闭该窗口,希望能给你侍正带来帮助...

上洞咐衫传:

需要导入两个包:commons-fileupload-1.2.1.jar,commons-io-1.4.jar

import java.io.File

import java.io.IOException

import java.util.List

import javax.servlet.ServletException

import javax.servlet.http.HttpServlet

import javax.servlet.http.HttpServletRequest

import javax.servlet.http.HttpServletResponse

import org.apache.commons.fileupload.FileItem

import org.apache.commons.fileupload.disk.DiskFileItemFactory

import org.apache.commons.fileupload.servlet.ServletFileUpload

/**

* 上传附件

* @author new

*

*/

public class UploadAnnexServlet extends HttpServlet {

private static String path = ""

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request, response)

}

/*

* post处理

* (non-Javadoc)

* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)

*/

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

path = this.getServletContext().getRealPath("简羡/upload")

try {

DiskFileItemFactory factory = new DiskFileItemFactory()

ServletFileUpload up = new ServletFileUpload(factory)

List<FileItem>ls = up.parseRequest(request)

for (FileItem fileItem : ls) {

if (fileItem.isFormField()) {

String FieldName = fileItem.getFieldName()

//getName()返回的是文件名字 普通域没有文件 返回NULL

//String Name = fileItem.getName()

String Content = fileItem.getString("gbk")

request.setAttribute(FieldName, Content)

} else {

String nm = fileItem.getName().substring(

fileItem.getName().lastIndexOf("\\"纳腔) + 1)

File mkr = new File(path, nm)

if (mkr.createNewFile()) {

fileItem.write(mkr)//非常方便的方法

}

request.setAttribute("result", "上传文件成功!")

}

}

} catch (Exception e) {

e.printStackTrace()

request.setAttribute("result", "上传失败,请查找原因,重新再试!")

}

request.getRequestDispatcher("/pages/admin/annex-manager.jsp").forward(

request, response)

}

}

下载(i/o流)无需导包:

import java.io.IOException

import java.net.URLEncoder

import javax.servlet.ServletException

import javax.servlet.http.HttpServlet

import javax.servlet.http.HttpServletRequest

import javax.servlet.http.HttpServletResponse

/**

* 下载文件

* @author

*

*/

public class DownloadFilesServlet extends HttpServlet {

/**

*

*/

private static final long serialVersionUID = 8594448765428224944L

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

doPost(request, response)

}

/*

* 处理请求

* (non-Javadoc)

* @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)

*/

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String name = request.getParameter("fileName")

System.out.print("dddddddddd:" + name)

// web绝对路径

String path = request.getSession().getServletContext().getRealPath("/")

String savePath = path + "upload"

// 设置为下载application/x-download

response.setContentType("application/x-download")

// 即将下载的文件在服务器上的绝对路径

String filenamedownload = savePath + "/" + name

// 下载文件时显示的文件保存名称

String filenamedisplay = name

// 中文编码转换

filenamedisplay = URLEncoder.encode(filenamedisplay, "UTF-8")

response.addHeader("Content-Disposition", "attachmentfilename="

+ filenamedisplay)

try {

java.io.OutputStream os = response.getOutputStream()

java.io.FileInputStream fis = new java.io.FileInputStream(

filenamedownload)

byte[] b = new byte[1024]

int i = 0

while ((i = fis.read(b)) >0) {

os.write(b, 0, i)

}

fis.close()

os.flush()

os.close()

} catch (Exception e) {

}

}

}

重定向的,不好处理。。。。。。。自己使用流处理

response.setContentType(fileminitype)

response.setHeader("Location",filename)

response.setHeader("枣坦笑Cache-Control", "max-age=" + cacheTime)

response.setHeader("Content-Disposition", "凳含attachmentfilename=" + 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


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12229142.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存