String pathname = "upload";
String fileName ="";
String xuh = request.getParameter("xuh");
String lcm = request.getParameter("lcm");
Map<String,String> map=new HashMap<String,String>();
try {
// inputStream = request.getInputStream();
// 创建工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
// 得到所有的文件
List<FileItem> items = upload.parseRequest(request);
Iterator<FileItem> i = items.iterator();
while (i.hasNext()) {
FileItem fi = i.next();
// false表示文件 否则字段
if (!fi.isFormField()) {
fileName = fi.getName();
if (fileName != null) {
inputStream = fi.getInputStream();
}else{
map.put("flag","失败");
}
}
}
ftpClient = new FTPClient();
ftpClient.setControlEncoding("utf-8");
try {
ftpClient.connect(hostname, port); //连接ftp服务器
ftpClient.login(username, password); //登录ftp服务器,这里很慢需要优化
int replyCode = ftpClient.getReplyCode(); //是否成功登录服务器
if (!FTPReply.isPositiveCompletion(replyCode)) {
ftpClient.disconnect();
map.put("flag","失败");
}
ftpClient.enterLocalPassiveMode();//被动模式,内网时使用,由服务器端开发端口给客户端机型数据传输
} catch (MalformedURLException e) {
e.printStackTrace();
map.put("flag","失败"+e);
} catch (IOException e) {
e.printStackTrace();
map.put("flag","失败"+e);
}
String rqml=CreateMakeDirectory();//返回一个日期目录
String ftpDirectory=pathname+"/"+lcm+rqml;
//切换到指定目录,切换不到则该目录不存在,创建一个然后切换,有则直接切换
String tempPath="";
if (!ftpClient.changeWorkingDirectory(ftpDirectory)) {
String[] dirs = ftpDirectory.split("/");
for (String dir : dirs) {
tempPath += "/" + dir;
if (!ftpClient.changeWorkingDirectory(tempPath)) {
ftpClient.makeDirectory(tempPath);
ftpClient.changeWorkingDirectory(tempPath);
}
}
}else{
ftpClient.changeWorkingDirectory(tempPath);
}
//改变文件名称
String newfileName=createFileNmae(fileName);
ftpClient.setFileType(ftpClient.BINARY_FILE_TYPE);
//设置上传缓存区
ftpClient.setBufferSize(1024*1024);
//关于读取的流,建立带缓冲的数据流
BufferedInputStream Binput = new BufferedInputStream(inputStream);
//写入文件
ftpClient.storeFile(newfileName, Binput);
inputStream.close(); //关闭流
ftpClient.logout(); //推出登录
map.put("flag","成功");
map.put("fileName",newfileName);
map.put("filePath","ftp://"+hostname+"/"+ftpDirectory+"/"+newfileName);
map.put("xuh",xuh);
map.put("ftpDirectory",ftpDirectory);
} catch (Exception e) {
System.out.println("shibai");
e.printStackTrace();
map.put("flag","失败"+e);
} finally {
if (ftpClient.isConnected()) {
try {
ftpClient.disconnect();//断开连接
} catch (IOException e) {
e.printStackTrace();
map.put("flag","失败"+e);
}
}
if (null != inputStream) {
try {
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
map.put("flag","失败"+e);
}
}
}
String param= JSON.toJSONString(map);
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json;charset=UTF8");
PrintWriter writer = response.getWriter();
writer.write(JSON.toJSONString(map));
writer.close();