package com.tools;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
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;
import org.apache.commons.net.ftp.FTPClient;
public class FTPClientTool {
private FTPClient ftp;
// 上传文件的保存路径
public static String configPath = "/attached/";
public static String dirTemp = "/attached/temp/";
public static String dirName = "file";
public Map<String,Object> upload(HttpServletRequest request, HttpServletResponse response) throws Exception{
Long betime=System.currentTimeMillis();
Boolean b=false;
ftp = new FTPClient();
List<String> reList=new ArrayList<String>();
Map<String,Object> map= new HashMap<String,Object>();
//连接文件配置
PropertiesLoader pl = new PropertiesLoader("config.properties");
String HostName=pl.getProperty("HostName").trim();
String Port=pl.getProperty( "Port").trim();
String Username=pl.getProperty( "Username").trim();
String Password=pl.getProperty( "Password").trim();
String LocationUrl=pl.getProperty( "LocationUrl").trim();
String HttpPort=pl.getProperty( "HttpPort").trim();
String AllowSize=pl.getProperty( "AllowSize").trim();
String AllowType=pl.getProperty( "AllowType").trim();
Config cf = new Config();
cf.setHostName(HostName);
cf.setPort(Integer.parseInt(Port));
cf.setPassword(Password);
cf.setUsername(Username);
Map<String, List<String>> mm = new HashMap<String,List<String>>();
List<String> list=new ArrayList<>();
list.add(LocationUrl);
mm.put("uplocation",list);
cf.setFilesToUpload(mm);
//====
// 文件保存目录路径
String local=request.getSession().getServletContext().getRealPath("") ;
String savePath = local + configPath;
// 临时文件目录
String tempPath = local + dirTemp;
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM" );
String ymd = sdf.format( new Date());
savePath += "/" + ymd + "/";
// 创建文件夹
File dirFile = new File(savePath);
if (!dirFile.exists())
{
dirFile.mkdirs();
}
tempPath += "/" + ymd + "/";
// 创建临时文件夹
File dirTempFile = new File(tempPath);
if (!dirTempFile.exists())
{
dirTempFile.mkdirs();
}
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(20 * 1024 * 1024); // 设定使用内存超过5M时,将产生临时文件并存储于临时目录中。
factory.setRepository( new File(tempPath)); // 设定存储临时文件的目录。
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding( "UTF-8");
try
{
List items = upload.parseRequest(request);
Iterator itr = items.iterator();
while (itr.hasNext())
{
FileItem item = (FileItem) itr.next();
String fileName = item.getName();
if("".equals(fileName)){
continue;
}
long fileSize = item.getSize();//上传文件大小
if(fileSize>Long.parseLong(AllowSize)){
map.put("uploadfiles", "");
map.put("uploadstatus", 1);
map.put("uploadmessage", fileName+"文件过大");
return map;
}
String tfileName=item.getContentType();//获取文件类型
if(!AllowType.contains(tfileName)){
map.put("uploadfiles", "");
map.put("uploadstatus", 2);
map.put("uploadmessage", fileName+"文件格式不正确");
return map;
}
if (!item.isFormField())
{
String fileExt = fileName.substring(fileName.lastIndexOf("." ) + 1).toLowerCase();
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss" );
String newFileName = df.format( new Date()) + "_" + new Random().nextInt(10000) + "." + fileExt;
try
{
File uploadedFile = new File(savePath, newFileName);
OutputStream os = new FileOutputStream(uploadedFile);
InputStream is = item.getInputStream();
byte buf[] = new byte[1024]; // 可以修改 1024 以提高读取速度
int length = 0;
while ((length = is.read(buf)) > 0)
{
os.write(buf, 0, length);
}
// 关闭流
os.flush();
os.close();
is.close();
FtpUpload t = new FtpUpload();
SimpleDateFormat sdfs = new SimpleDateFormat("yyMMdd");
t.connect(cf.getFilesToUpload().get("uplocation").get(0)+"/"+sdfs.format(new Date()), cf.getHostName(), cf.getPort(), cf.getUsername(), cf.getPassword());
//File file = new File("F:\\turn_large.png");
b=t.upload(uploadedFile); //是否ftp上传成功
if(true==b){
reList.add("http://"+cf.getHostName()+":"+HttpPort+cf.getFilesToUpload().get("uplocation").get(0).split("webapps")[1]+"/"+sdfs.format(new Date())+"/"+newFileName);
}
}catch (Exception e){
e.printStackTrace();
}
}else{
String filedName = item.getFieldName();
System. out.println( "FieldName:" + filedName);
System. out.println( "String:" + item.getString());
// System.out.println("String():"+item.getString(item.getName()));
System.out.println("===============" );
}
}
}catch (Exception e){
e.printStackTrace();
}
//当上传完最后一个文件的时候进行删除本地临时目录
//删除本地生成文件是否成功
Boolean boo1=false;
Boolean boo2=false;
DelFileFolder dff = new DelFileFolder();
boo1=dff.deleteDirectory(savePath);
boo2=dff.deleteDirectory(tempPath);
if(true==boo1&&true==boo2&&true==b){
System. out.println( "上传成功!本地存储临时文件路径:" + savePath + " 已删除!");
for (int i = 0; i < reList.size(); i++) {
System.out.println("上传文件url:"+reList.get(i));
}
map.put("uploadfiles", reList);
map.put("uploadstatus", 0);
map.put("uploadmessage", "上传成功");
}else{
map.put("uploadfiles", reList);
map.put("uploadstatus", 3);
map.put("uploadmessage", "上传�
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
使用前端插件上传文件到ftp服务器 (133个子文件)
FTPClientTool.class 9KB
FTPUtil.class 5KB
Product.class 5KB
PropertiesLoader.class 4KB
FTPTools.class 4KB
GeneratePDF.class 3KB
FtpUpload.class 3KB
PutStuff.class 2KB
DeelServlet.class 2KB
UserService.class 2KB
Config.class 2KB
DeelServlet2.class 2KB
FTPtest.class 2KB
DelFileFolder.class 2KB
DateMsTransferTool.class 2KB
CacheManager.class 1KB
PutStuffMapper.class 427B
ProductMapper.class 385B
.classpath 834B
org.eclipse.wst.common.component 461B
org.eclipse.wst.jsdt.ui.superType.container 49B
zyUpload.css 8KB
Thumbs.db 8KB
Thumbs.db 8KB
poi-ooxml-schemas-3.8-20120326.jar 4.49MB
itext-4.2.1.jar 2.14MB
guava-14.0.1.jar 2.09MB
aspectjweaver-1.7.3.jar 1.74MB
poi-3.8-20120326.jar 1.74MB
ehcache-core-2.6.6.jar 1.28MB
mysql-connector-java-5.1.39-bin.jar 966KB
poi-ooxml-3.8-20120326.jar 911KB
jackson-databind-2.1.5.jar 906KB
spring-core-3.2.3.RELEASE.jar 847KB
spring-context-3.2.3.RELEASE.jar 843KB
thumbnailator.jar 795KB
javassist-3.18.0-GA.jar 697KB
mybatis-3.2.2.jar 683KB
spring-webmvc-3.2.3.RELEASE.jar 622KB
spring-web-3.2.3.RELEASE.jar 611KB
c3p0-0.9.1.2.jar 596KB
spring-beans-3.2.3.RELEASE.jar 593KB
commons-collections-3.2.1.jar 562KB
mysql-connector-java-5.0.8-bin.jar 528KB
SimpleClientTool.jar 486KB
antlr-2.7.7.jar 435KB
logback-core-1.0.13.jar 409KB
jstl-1.2.jar 405KB
spring-jdbc-3.2.3.RELEASE.jar 396KB
spring-orm-3.2.3.RELEASE.jar 378KB
spring-aop-3.2.3.RELEASE.jar 328KB
spring-data-commons-1.5.1.RELEASE.jar 314KB
commons-lang3-3.1.jar 308KB
dom4j-1.6.1.jar 307KB
logback-classic-1.0.13.jar 258KB
jolokia-core-1.1.2.jar 257KB
dozer-5.4.0.jar 243KB
junit-4.11.jar 239KB
spring-tx-3.2.3.RELEASE.jar 237KB
commons-codec-1.6.jar 227KB
commons-beanutils-1.8.3.jar 227KB
jackson-core-2.1.5.jar 202KB
spring-expression-3.2.3.RELEASE.jar 191KB
commons-net-1.4.1.jar 177KB
commons-io-2.2.jar 170KB
spring-data-jpa-1.3.2.RELEASE.jar 143KB
spring-context-support-3.2.3.RELEASE.jar 125KB
tomcat-jdbc-7.0.42.jar 121KB
aspectjrt-1.7.3.jar 114KB
javax.ws.rs-api-2.0-m10.jar 108KB
commons-io-1.4.jar 106KB
jboss-logging-3.1.0.GA.jar 59KB
commons-fileupload-1.2.2.jar 58KB
mybatis-spring-1.2.0.jar 48KB
commons-logging-api-1.1.jar 44KB
jackson-annotations-2.1.5.jar 34KB
jackson-module-jaxb-annotations-2.1.5.jar 31KB
javax.transaction-1.1.1.v201105210645.jar 28KB
slf4j-api-1.7.5.jar 25KB
commons-jymf-2.0.jar 20KB
common-junit48-2.15.jar 18KB
json-simple-1.1.jar 16KB
commons-jymf-label-4.0.jar 9KB
aopalliance-1.0.jar 4KB
FTPClientTool.java 8KB
PropertiesLoader.java 5KB
FTPUtil.java 5KB
Product.java 5KB
GeneratePDF.java 4KB
FTPTools.java 4KB
FtpUpload.java 3KB
DelFileFolder.java 3KB
PutStuff.java 2KB
DeelServlet.java 2KB
Config.java 1KB
DeelServlet2.java 1KB
UserService.java 1KB
DateMsTransferTool.java 1KB
FTPtest.java 888B
CacheManager.java 702B
共 133 条
- 1
- 2
资源评论
- youyi78902019-11-30有用,可以尝试一下。 后来我们是自己用ajax+formdata实现了上传,一次上传一个。只是用了input。用了onclick函数,触发的操作。$[input][0].file[0]
- 泡泡茶壶lj2021-11-10怎么用呀~
我是鳄鱼头领
- 粉丝: 32
- 资源: 27
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功