里面包涵两部分内容 ,可以拆开来用,文件上传到服务器 文件上传到ftp
@RequestMapping(value="uploadFile_old")
@ResponseBody
public Object uploadFile_old(HttpServletRequest request,HttpServletResponse response)throws IOException
{
Map<String,Object> resMap=Maps.newHashMap();
boolean result=false;
String Ip = request.getParameter("IpAddr");
int ftpPort = 3121;
String ftpName = "root";
String ftpPwd = "hisome";
String ftpUrl = "//home";
String fileUrl=request.getParameter("fileUrl");
//F:\jzkz-web\jzkz-web_two\src\main\webapp
String courString = request.getSession().getServletContext().getRealPath("");
String SerPath=courString+"\\upFile";
File file = new File(fileUrl);
//得到上传的文件名称,
String filename =file.getName();
//spectrum_bg.data
filename = filename.substring(filename.lastIndexOf("\\")+1);
boolean createFileIsOk=false;
//新建临时文件 创建目录
File dir = new File(SerPath);
if (dir.exists()) {
System.out.println("目标目录已经存在");
File files = new File(SerPath+"\\"+filename);
if (files.exists()) {
files.delete();
}
createFileIsOk= true;
}else{
//创建目录
if (dir.mkdirs()) {
createFileIsOk= true;
}else{
createFileIsOk= false;
}
}
if (!SerPath.endsWith(File.separator)) {
SerPath = SerPath + File.separator;
}
// 把文件先上传到服务器上
if(createFileIsOk){
//获取上传文件的输入流
FileInputStream input = new FileInputStream(file);
//创建一个文件输出流
FileOutputStream out = new FileOutputStream(SerPath + "\\" + filename);
//创建一个缓冲区
byte buffer[] = new byte[1024];
//判断输入流中的数据是否已经读完的标识
int len = 0;
//循环将输入流读入到缓冲区当中,(len=input.read(buffer))>0就表示in里面还有数据
while((len=input.read(buffer))>0){
//使用FileOutputStream输出流将缓冲区的数据写入到指定的目录(SerPath + "\\" + filename)当中
out.write(buffer, 0, len);
}
//关闭输入流
input.close();
//关闭输出流
out.close();
System.out.println("上传服务器成功!");
FTPClient ftp = new FTPClient();
boolean connectRes=false;
int reply;
try{
ftp.connect(Ip,ftpPort);
ftp.login(ftpName,ftpPwd);
ftp.setFileType(FTPClient.BINARY_FILE_TYPE);
reply = ftp.getReplyCode();
if (!FTPReply.isPositiveCompletion(reply)) {
ftp.disconnect();
}else{
ftp.changeWorkingDirectory(ftpUrl);
System.out.println(ftpUrl);
connectRes = true;
}
}catch(Exception e){
}
if(connectRes){
System.out.println("connectRes is true");
try{
File newfile = new File(SerPath+"\\"+filename);
upload(newfile,ftp);
result=true;
}catch(Exception e){
System.out.println("upload error");
result=false;
}
}
}else{
result=false;
}
//删除处理文件上传时生成的临时文件
//dir.delete();
resMap.put("message",result);
return resMap;
}
private static void upload(File file,FTPClient ftp) throws Exception{
if(file.isDirectory()){ //如果path表示的是一个目录则返回true
ftp.makeDirectory(file.getName());
ftp.changeWorkingDirectory(file.getName());
ftp.enterLocalPassiveMode();
String[] files = file.list();
for (int i = 0; i < files.length; i++) {
File file1 = new File(file.getPath()+"\\"+files[i] );
if(file1.isDirectory()){
upload(file1,ftp);
ftp.changeToParentDirectory();
}else{
File file2 = new File(file.getPath()+"\\"+files[i]);
FileInputStream input = new FileInputStream(file2);
ftp.storeFile(file2.getName(), input);
input.close();
}
}
}else{
ftp.enterLocalPassiveMode();
System.out.println("++++ : "+file.getPath());
File file2 = new File(file.getPath());
FileInputStream input = new FileInputStream(file2);
boolean aa=ftp.storeFile(file2.getName(), input);
System.out.println("ftp.storeFile : "+aa);
input.close();
}
}