<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>编号 | 真名 | 账号 | 邮箱 | 激活码 | 进度 |
---|
-----------------下面是java代码----------------------------
package com.dt.controller;
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.Hashtable;
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.servlet.ServletFileUpload;
import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import com.alibaba.fastjson.JSONObject;
@Controller
@RequestMapping("file")
public class FileController {
// windows
private String PATH_LINE = "\\";
// linux
// private String PATH_LINE = "/";
@SuppressWarnings("unchecked")
@RequestMapping(value = "/fileUpload", method = RequestMethod.POST)
@ResponseBody
public void fileUpload(HttpServletRequest request, HttpServletResponse response,
@RequestParam("imgFile") MultipartFile[] imgFile) {
try {
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
// 文件保存本地目录路径
String savePath = request.getSession().getServletContext().getRealPath(PATH_LINE) + "kindeditor" + PATH_LINE
+ "attached" + PATH_LINE;
System.out.println("本地路径:" + savePath);
// 文件保存目录URL
String saveUrl = request.getContextPath() + PATH_LINE + "kindeditor" + PATH_LINE + "attached" + PATH_LINE;
System.out.println("文本url:" + saveUrl);
if (!ServletFileUpload.isMultipartContent(request)) {
out.print(getError("请选择文件。"));
out.close();
return;
}
// 检查目录
File uploadDir = new File(savePath);
if (!uploadDir.isDirectory()) {
out.print(getError("上传目录不存在。"));
out.close();
return;
}
// 检查目录写权限
if (!uploadDir.canWrite()) {
out.print(getError("上传目录没有写权限。"));
out.close();
return;
}
String dirName = request.getParameter("dir");
if (dirName == null) {
dirName = "image";
}
// 定义允许上传的文件扩展名
Map
extMap.put("image", "gif,jpg,jpeg,png,bmp");
extMap.put("flash", "swf,flv");
extMap.put("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb");
extMap.put("file", "doc,docx,xls,xlsx,ppt,htm,html,xml,txt,zip,rar,gz,bz2");
if (!extMap.containsKey(dirName)) {
out.print(getError("目录名不正确。"));
out.close();
return;
}
// 创建文件夹
savePath += dirName + PATH_LINE;
saveUrl += dirName + PATH_LINE;
File saveDirFile = new File(savePath);
if (!saveDirFile.exists()) {
saveDirFile.mkdirs();
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String ymd = sdf.format(new Date());
savePath += ymd + PATH_LINE;
saveUrl += ymd + PATH_LINE;
File dirFile = new File(savePath);
if (!dirFile.exists()) {
dirFile.mkdirs();
}
// 最大文件大小
long maxSize = 1000000;
// 保存文件
for (MultipartFile iFile : imgFile) {
String fileName = iFile.getOriginalFilename();
// 检查文件大小
if (iFile.getSize() > maxSize) {
out.print(getError("上传文件大小超过限制。"));
out.close();
return;
}
// 检查扩展名
String fileExt = fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
if (!Arrays.
// return getError("上传文件扩展名是不允许的扩展名。\n只允许" +
// extMap.get(dirName) + "格式。");
out.print(getError("上传文件扩展名是不允许的扩展名。\n只允许" + extMap.get(dirName) + "格式。"));
out.close();
return;
}
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
String newFileName = df.format(new Date()) + "_" + new Random().nextInt(1000) + "." + fileExt;
System.out.println(savePath+newFileName);
try {
File uploadedFile = new File(savePath, newFileName);
// 写入文件
FileUtils.copyInputStreamToFile(iFile.getInputStream(), uploadedFile);
} catch (Exception e) {
out.print(getError("上传文件失败。"));
out.close();
return;
}
JSONObject obj = new JSONObject();
obj.put("error", 0);
obj.put("url", saveUrl + newFileName);
System.out.println("-------最后的路径--------"+saveUrl + newFileName);
out.print(obj.toJSONString());
out.close();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private Map
Map
errorMap.put("error", 1);
errorMap.put("message", errorMsg);
return errorMap;
}
/**
* 文件空间
*
* @param request
* {@link HttpServletRequest}
* @param response
* {@link HttpServletResponse}
* @return json
*/
@RequestMapping(value = "/fileManager")
@ResponseBody
public void fileManager(HttpServletRequest request, HttpServletResponse response) {
//System.out.println("获取核心path参数:"+request.getParameter("path"));
try {
// 根目录路径,可以指定绝对路径
String rootPath = request.getSession().getServletContext().getRealPath(PATH_LINE) + "kindeditor" + PATH_LINE
+ "attached" + PATH_LINE;
// 根目录URL,可以指定绝对路径,比如 http://www.yoursite.com/attached/
String rootUrl = request.getContextPath() + PATH_LINE + "kindeditor" + PATH_LINE + "attached" + PATH_LINE;
response.setContentType("application/json; charset=UTF-8");
PrintWriter out = response.getWriter();
// 图片扩展名
String[] fileTypes = new String[] { "gif", "jpg", "jpeg", "png", "bmp" };
String dirName = request.getParameter("dir");
if (dirName != null) {
if (!Arrays.
out.print("无效的文件夹。");
out.close();
return;
}
rootPath += dirName + PATH_LINE;
rootUrl += dirName + PATH_LINE;
File saveDirFile = new File(rootPath);
if (!saveDirFile.exists()) {
saveDirFile.mkdirs();
}
}
// 根据path参数,设置各路径和URL
String path = request.getParameter("path") != null ? request.getParameter("path") : "";
String currentPath = rootPath + path;
String currentUrl = rootUrl + path;
String currentDirPath = path;
String moveupDirPath = "";
if (!"".equals(path)) {
String str = currentDirPath.substring(0, currentDirPath.length() - 1);
moveupDirPath = str.lastIndexOf(PATH_LINE) >= 0 ? str.substring(0, str.lastIndexOf(PATH_LINE) + 1) : "";
}
// 排序形式,name or size or type
String order = request.getParameter("order") != null ? request.getParameter("order").toLowerCase() : "name";
// 不允许使用..移动到上一级目录
if (path.indexOf("..") >= 0) {
out.print("访问权限拒绝。");
out.close();
return;
}
/* 最后一个字符不是
if (!"".equals(path) && !path.endsWith(PATH_LINE)) {
out.print("无效的访问参数验证。");
System.out.println("无效的访问参数验证。");
out.close();
return;
}*/
//最后一个字符不是/
System.out.println(path);
if (!"".equals(path) && !path.endsWith("/")) {
out.println("Parameter is not valid.");
return;
}
// 目录不存在或不是目录
File currentPathFile = new File(currentPath);
if (!currentPathFile.isDirectory()) {
out.print("文件夹不存在。");
out.close();
return;
}
// 遍历目录取的文件信息
List
-----------------------------------------------------------------------------------
package com.dt.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import com.alibaba.fastjson.JSONObject;
import com.dt.util.FtpUtil;
@Controller
@RequestMapping("ftp")
public class FtpController {
@RequestMapping(value = "/fileUpload", method = RequestMethod.POST)
@ResponseBody
public void fileUpload(HttpServletRequest request, HttpServletResponse response,
@RequestParam("imgFile") MultipartFile imgFile) throws IOException {
JSONObject obj = new JSONObject();
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
System.out.println("---------");
try {
// 上传文件功能实现
// 判断文件是否为空
if (imgFile.isEmpty()) {
}
// 上传文件以日期为单位分开存放,可以提高图片的查询速度
String filePath = "/" + new SimpleDateFormat("yyyy").format(new Date()) + "/"
+ new SimpleDateFormat("MM").format(new Date()) + "/"
+ new SimpleDateFormat("dd").format(new Date());
// 取原始文件名
// String originalFilename = imgFile.getOriginalFilename();
String new_filename = genImageName() + ".jpg";
// 转存文件,上传到ftp服务器
FtpUtil.uploadFile("192.168.1.110", 21, "test", "123456", "", filePath, new_filename,
imgFile.getInputStream());
String pp = "http://192.168.1.110/img" + filePath + "/" + new_filename;
System.out.println("******pp******" + pp);
obj.put("error", 0);
obj.put("url", pp);
} catch (Exception e) {
e.printStackTrace();
}
out.print(obj.toJSONString());
out.close();
}
/*
*
* FTPClient ftpClient = new FTPClient();
* ftpClient.connect("192.168.25.200"); ftpClient.login("ftpuser",
* "ftpuser"); FileInputStream inputStream = new FileInputStream(new
* File("D:\\Documents\\Pictures\\pics\\21.jpg"));
* ftpClient.setFileType(FTP.BINARY_FILE_TYPE);
* ftpClient.storeFile("123.jpg", inputStream); inputStream.close();
*
* ftpClient.logout();
*
*/
/**
* 图片名生成
*/
public static String genImageName() {
// 取当前时间的长整形值包含毫秒
long millis = System.currentTimeMillis();
// long millis = System.nanoTime();
// 加上三位随机数
Random random = new Random();
int end3 = random.nextInt(999);
// 如果不足三位前面补0
String str = millis + String.format("%03d", end3);
return str;
}
}
----------------------------------------------------------------------------------------------------
package com.dt.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import org.apache.commons.net.ftp.FTPReply;
/**
* ftp上传下载工具类
*
Title: FtpUtil
Description:
Company: www.itcast.com