`

上传下载

 
阅读更多
public ActionForward ftpUpload(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws IOException, FileUploadException {
String title = URLDecoder.decode(
request.getParameter("title") == null ? "" : request.getParameter("title"), "UTF-8");

String pxh  = request.getParameter("pxh");
String xtsoft = ApplicationPath.getInstance().param.getProperty("xtsoft");
String person_picuterPath = File.separator + xtsoft;

DiskFileItemFactory factory = new DiskFileItemFactory();
long allowedUploadSize = Long.parseLong(this.getAllowedUploadSize()) * 1024 * 1024;
factory.setSizeThreshold(4096);// 设置缓冲
// factory.setRepository(new File(""));// 设置缓冲区目录,默认是new
// File(System.getProperty("java.io.tmpdir"))
//System.out.println("临时文件所在路径:"+System.getProperty("java.io.tmpdir"));
ServletFileUpload sfu = new ServletFileUpload(factory);
sfu.setSizeMax(allowedUploadSize);
List items = new ArrayList();


try {
items = sfu.parseRequest(request);
} catch (SizeLimitExceededException e1) {
e1.printStackTrace();
String msgs = "<script>parent.close();parent.window.dialogArguments.alert('上传的文档不能超过"
+ Integer.parseInt(this.getAllowedUploadSize())
+ "M');" + "</script>";

request.setAttribute("message",msgs);
return mapping.findForward("upLoadMessage");
}

for (Iterator iterator = items.iterator(); iterator.hasNext();) {

FileItem fileItem= (FileItem) iterator.next();

if( !fileItem.isFormField())  //只有是文件上传的时候,才进行保存数据库
{
String picTitle = "";
String picType = "";
GUID userId = new GUID();

String picFileName = fileItem.getName();
String person_picuterPath1 = "";
byte[] picdata = new byte[0];
String picPath ="";
if (picFileName != null && !"".equals(picFileName)) {
int i = picFileName.lastIndexOf(".");

if (i != -1) {
picTitle = fileItem.getName().substring(
fileItem.getName().lastIndexOf("\\") + 1,
fileItem.getName().length());

picTitle = picTitle.substring(0,picTitle.lastIndexOf("."));

picType =  picFileName.substring(
picFileName.lastIndexOf(".") + 1, picFileName
.length());
}
picPath = userId + "." + picType;

}


person_picuterPath1 = person_picuterPath + File.separator + picPath;  //相对路径

FTPUtils ftpUtils = new FTPUtils();

if (ftpUtils.connect()) {
BufferedInputStream bis = new BufferedInputStream(fileItem.getInputStream());
ftpUtils.storeFile(person_picuterPath1, bis);

ftpUtils.close();
}

// try {
// int i = -1;
// InputStream in = fileItem.getInputStream();
// BufferedInputStream out = new BufferedInputStream();
// while ((i = in.read()) != -1) {
// out.write(i);
// }
// picdata = out.toByteArray();
// in.close();
// out.close();
// } catch (FileNotFoundException e) {
// e.printStackTrace();
// } catch (IOException e) {
// e.printStackTrace();
// }

if (fileItem.getInputStream()!=null) {
// uploadTools.uploadFile(person_picuterPath1, picdata);
// int pxh = xtSoftService.getmaxID("pxh", "xt_soft");
XtSoft soft = new XtSoft();
soft.setId(userId.toString());
soft.setTitle(title);
soft.setFileType(picType);
soft.setFileName(picPath);
soft.setPxh(Long.valueOf(String.valueOf(pxh)).longValue());
xtSoftService.AddXtSoft(soft);
}

}

}
request.setAttribute("message","上传成功!");
return mapping.findForward("upLoadMessage");

}



**********************************************************

public ActionForward FtpDownloadAttachment(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

String attchId = request.getParameter("attchId");
String fileType = request.getParameter("fileType");
String xtsoft = ApplicationPath.getInstance().param.getProperty("xtsoft");
String person_picuterPath1 = File.separator + xtsoft + File.separator + attchId+"."+fileType;  //相对路径

String path = ApplicationPath.getInstance().param.getProperty("DiskPath");
path = StringTools.replaceAll(path,"\\",File.separator);
path = StringTools.replaceAll(path,"/",File.separator);
BufferedOutputStream bos = null; 
FileInputStream fis = null; 

if (attchId != null && !"".equals(attchId)) { 
try {  

String reName = xtSoftService.getAttchmentName(attchId);
reName = reName+"."+fileType;
// String disposition = "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8");//注意(1) 

String   reponsefileName = new String(reName.getBytes("GBK"),"ISO8859_1");     
response.setHeader("Content-Disposition", "attachment;filename="+ reponsefileName);

response.setContentType("application/x-msdownload;charset=UTF-8");//注意(2) 
//   response.setHeader("Content-disposition", disposition); 

// fis = new FileInputStream(path +File.separator+ fileName); 
bos = new BufferedOutputStream(response.getOutputStream()); 
  
byte[] buffer = new byte[2048]; 

buffer = uploadTools.downloadFile(File.separator+ person_picuterPath1);
int n = 0;

// while ((n = fis.read(buffer))  != -1)
bos.write(buffer, 0, buffer.length);

bos.flush();
bos.close();
// fis.close();
} catch (IOException e) { 
e.printStackTrace(); 
}

return null;

}


*******************************************************

/**
* 返回允许上传的大小,单位为M.要验证是否是数字
*
* @return
*/
private String getAllowedUploadSize() {
String sizeStr = "100";
InputStream in = null;
try {
in = this.getClass().getResourceAsStream("/app.properties");
Properties p = new Properties();
p.load(in);
sizeStr = p.getProperty("AllowedUploadSize");
if (sizeStr == null || sizeStr.trim().length() == 0) {
sizeStr = "100";
}
Integer.parseInt(sizeStr);
} catch (IOException e) {
e.printStackTrace();
} catch (NumberFormatException e) {
e.printStackTrace();
sizeStr = "100";
} finally {
try {
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return sizeStr;

}
分享到:
评论

相关推荐

    文件上传下载需要的jar包 java文件上传下载

    在这个场景下,"文件上传下载需要的jar包"指的是用于处理文件上传和下载操作的Java类库。下面将详细介绍相关的知识点。 1. **Apache Commons FileUpload**: 这是一个非常流行的Java库,用于处理HTTP请求中的多部分...

    局域网文件上传下载工具

    【局域网文件上传下载工具】是一个实用的软件应用,主要设计用于在局域网内的设备之间方便地进行文件的上传和下载操作。这个工具强调的是简单易用和跨平台特性,使得用户无论是在Windows、Mac还是Linux系统上都能...

    基于Python+Django简单实现文件上传下载功能源码.zip

    基于Python+Django简单实现文件上传下载功能源码 基于Python+Django简单实现文件上传下载功能源码 基于Python+Django简单实现文件上传下载功能源码 基于Python+Django简单实现文件上传下载功能源码 基于...

    基于jsp的文件上传下载

    "基于jsp的文件上传下载"是Web应用程序中的常见需求,涉及到客户端与服务器之间的数据交互。本项目详细阐述了如何利用JSP实现文件的上传和下载功能。 首先,文件上传涉及的主要技术有HTML表单、Servlet和多部分请求...

    C# WinForm 文件上传下载

    在C# WinForm应用开发中,文件上传和下载是常见的功能需求。...通过`WebClient`类,我们可以轻松地完成基本的文件上传下载功能,但为了提供更健壮、用户体验更好的解决方案,还需要考虑更多的细节和优化策略。

    delphi做的文件上传下载服务器端

    标题 "delphi做的文件上传下载服务器端" 描述了一个使用Delphi编程语言开发的服务器程序,该程序专门设计用于处理文件的上传和下载功能。在IT领域,这样的系统通常涉及网络编程、多线程和并发处理,以确保能有效地...

    flashget上传下载工具

    《FlashGet:高效便捷的上传下载利器》 FlashGet,这款知名的互联网下载工具,以其卓越的性能和稳定性,深受广大用户的喜爱。它以其独特的多线程分段下载技术,极大地提高了文件下载的速度和效率,是互联网用户进行...

    ftp定时上传下载文件

    首先,FTP定时上传下载通常涉及到以下几个关键技术点: 1. FTP客户端库:为了与FTP服务器交互,我们需要一个FTP客户端库。在编程语言如Python中,有ftplib模块;在Java中,可以使用java.net包的FTPClient类;在.NET...

    文件上传下载服务springboot实现

    下载文件: 运行jersey-server, 不设置端口的情况下,默认为8080,springboot jar运行方式下默认端口为9000 ...文件路径分割符号请用/替代\...上传下载文件大小在工程jersey-server的配置文件application.properties里设置

    文件上传与下载模块源码 源码 上传下载

    图1.1 文件上传下载模块主页面 单击“上传文件”按钮,进入文件上传页面,如图1.2所示。一次可上传两个文件,选择文件路径,填写描述,然后单击“上传文件”按钮,即可将文件上传到程序路径下的files文件夹中。 图...

    http上传下载C++代码实现

    这些函数主要用于处理本地文件系统中的文件,为后续的上传下载提供支持。 - **`GetFileLen`**:获取文件长度。此函数通过使用`ftell`和`fseek`函数来获取当前文件指针的位置,并移动文件指针到文件末尾以获取文件总...

    C#webapi文件上传下载源码

    在这个场景下,"C# WebAPI文件上传下载源码"指的是使用C#编写的一套实现文件上传和下载功能的WebAPI服务代码。 文件上传功能是Web应用中的常见需求,允许用户将本地文件传输到服务器。在C# WebAPI中,这通常通过...

    VB API 实现FTP上传下载源代码

    **VB API FTP上传下载源代码详解** 在信息技术领域,FTP(File Transfer Protocol)是一种用于在网络上进行文件传输的标准协议。在VB(Visual Basic)环境中,我们可以使用API(Application Programming Interface...

    php 20个实例文件简单上传下载源码

    这个压缩包提供的"php 20个实例文件简单上传下载源码"集合了20个不同的示例,涵盖了PHP文件操作的基本原理和实践技巧。下面将详细阐述这些知识点。 1. **文件上传**: - PHP中的`&lt;input type="file"&gt;`元素用于在...

    web上传下载html

    在压缩包的文件名"上传下载"中,虽然没有具体的文件扩展名,但我们可以推测这可能包含了实现上传和下载功能的相关代码文件,如ASP.NET页面(.aspx)、后台代码文件(.cs)、CSS样式表(.css)、JavaScript脚本(.js...

    qt版ssh上传下载以及发命令

    对于"qt版ssh上传下载以及发命令"这个项目,其核心是实现了以下三个主要功能: 1. **文件上传**:这个功能允许用户将本地文件安全地传输到远程服务器。在Qt中,这通常涉及到打开一个本地文件,将其读取到内存中,...

    java上传下载实例

    你可以通过分析Action类、Interceptor、配置文件(struts.xml)等内容,深入理解Struts2如何与Servlet协同工作,完成文件的上传下载操作。此外,还可能涉及到异常处理、文件路径管理、安全性(防止恶意文件上传)等...

    文件上传下载工具

    在IT行业中,文件上传下载工具是常见的应用,尤其在服务器管理、数据共享和协作工作中扮演着重要角色。本文将深入探讨使用C++编程语言编写的文件上传下载工具,以及与其相关的技术要点。 C++是一种通用的、面向对象...

    上传下载文件以及页面全部源码

    本项目涉及的主题是“上传下载文件以及页面全部源码”,这通常指的是一个基于Web的系统,允许用户上传文件到服务器,并从服务器下载文件。在这里,我们重点关注的是使用SpringBoot框架实现这一功能。 SpringBoot是...

    嵌入式Linux下基于CGI的文件上传下载的实现

    ### 嵌入式Linux下基于CGI的文件上传下载实现 #### 1. 概述 随着嵌入式Linux的深入研究和发展,其在各领域的应用变得越来越广泛。嵌入式Linux是一种针对特定应用场景进行了裁剪和优化的Linux版本,能够适应资源...

Global site tag (gtag.js) - Google Analytics