package com.iaworld.oa.web.infostore.servlet;import com.iaworld.oa.infostore.Document;
import com.iaworld.oa.infostore.InfoStore;
import com.iaworld.oa.infostore.InfoStoreFactory;
import com.iaworld.oa.web.login.AppContext;
import com.iaworld.oa.web.login.Config;
import com.iaworld.oa.web.InfoStoreEnvImpl;
import com.iaworld.util.StreamUtil;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.FileInputStream;/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: Jul 18, 2003
* Time: 10:41:00 AM
* To change this template use Options | File Templates.
*/
public class DownloadFileServlet
extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException
{
try
{
boolean download = false; Config cfg = AppContext.getAppConfig(this); if (request.getParameter("download") != null) download = true;
HttpSession session = request.getSession();
AppContext ctx = AppContext.getAppContext(session);
String repositoryPath = cfg.getDocumentRoot();
InfoStore infoStore = InfoStoreFactory.getInfoStore(new InfoStoreEnvImpl(ctx));
Integer docId = new Integer(request.getParameter("docId"));
Document doc = infoStore.getDocument(docId);
java.io.File file = null;
file = new java.io.File(repositoryPath + doc.getParentPath() + "/" + doc.getName());
FileInputStream fileIn = null;
try
{
long fileLen = file.length();
fileIn = new FileInputStream(file);
String contentType = getServletContext().getMimeType(file.getAbsolutePath());
System.out.println("<<<<<<<<<<<<< File Content Type: " + contentType);
if (contentType == null || contentType.equals("application/octet-stream") || download)
{
System.out.println("<<<<<<<<<<<<<<<: Download!");
response.setContentType("application/octet-stream; charset=utf8");
String fileName = new String(doc.getName().getBytes(), "iso8859-1");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName); }
else
{
System.out.println("<<<<<<<<<<<<<<<: Known MIME");
response.setHeader("Content-Type", contentType);
}
response.setContentLength((int) fileLen);
StreamUtil.write(fileIn, response.getOutputStream());
response.getOutputStream().flush();
response.getOutputStream().close();
}
catch (Exception e)
{
throw e;
}
finally
{
try
{
if (fileIn != null) fileIn.close(); }
catch (Exception e)
{ }
}
}
catch (Exception e)
{
throw new ServletException(e.getMessage());
} } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException
{
doGet(request, response);
}
}
import com.iaworld.oa.infostore.InfoStore;
import com.iaworld.oa.infostore.InfoStoreFactory;
import com.iaworld.oa.web.login.AppContext;
import com.iaworld.oa.web.login.Config;
import com.iaworld.oa.web.InfoStoreEnvImpl;
import com.iaworld.util.StreamUtil;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.FileInputStream;/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: Jul 18, 2003
* Time: 10:41:00 AM
* To change this template use Options | File Templates.
*/
public class DownloadFileServlet
extends HttpServlet
{
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException
{
try
{
boolean download = false; Config cfg = AppContext.getAppConfig(this); if (request.getParameter("download") != null) download = true;
HttpSession session = request.getSession();
AppContext ctx = AppContext.getAppContext(session);
String repositoryPath = cfg.getDocumentRoot();
InfoStore infoStore = InfoStoreFactory.getInfoStore(new InfoStoreEnvImpl(ctx));
Integer docId = new Integer(request.getParameter("docId"));
Document doc = infoStore.getDocument(docId);
java.io.File file = null;
file = new java.io.File(repositoryPath + doc.getParentPath() + "/" + doc.getName());
FileInputStream fileIn = null;
try
{
long fileLen = file.length();
fileIn = new FileInputStream(file);
String contentType = getServletContext().getMimeType(file.getAbsolutePath());
System.out.println("<<<<<<<<<<<<< File Content Type: " + contentType);
if (contentType == null || contentType.equals("application/octet-stream") || download)
{
System.out.println("<<<<<<<<<<<<<<<: Download!");
response.setContentType("application/octet-stream; charset=utf8");
String fileName = new String(doc.getName().getBytes(), "iso8859-1");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName); }
else
{
System.out.println("<<<<<<<<<<<<<<<: Known MIME");
response.setHeader("Content-Type", contentType);
}
response.setContentLength((int) fileLen);
StreamUtil.write(fileIn, response.getOutputStream());
response.getOutputStream().flush();
response.getOutputStream().close();
}
catch (Exception e)
{
throw e;
}
finally
{
try
{
if (fileIn != null) fileIn.close(); }
catch (Exception e)
{ }
}
}
catch (Exception e)
{
throw new ServletException(e.getMessage());
} } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException
{
doGet(request, response);
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货