第一步:单独写一个commen的包,然后创一个FastdfsClient的class
package bootpanda.common; import java.io.IOException; import java.net.URLDecoder; import org.csource.common.MyException; import org.csource.common.NameValuePair; import org.csource.fastdfs.*; /** * fastdfs客户端 * * @author zw * */ public class FastDFSClient { private TrackerClient trackerClient = null; private TrackerServer trackerServer = null; private StorageServer storageServer = null; private StorageClient1 storageClient = null; /** * 调用本类时,需要在resources中增加fdfs_client.properties配置文件 * * @throws Exception */ public FastDFSClient() { try { String conf = this.getClass().getResource("/fdfs_client.properties").getPath(); if (conf.contains("classpath:")) { String path = URLDecoder .decode(getClass().getProtectionDomain().getCodeSource().getLocation().toString(), "UTF-8"); path = path.substring(6); conf = conf.replace("classpath:", URLDecoder.decode(path, "UTF-8")); } ClientGlobal.init(conf); trackerClient = new TrackerClient(); trackerServer = trackerClient.getConnection(); storageServer = null; storageClient = new StorageClient1(trackerServer, storageServer); } catch (Exception e) { e.printStackTrace(); } } /** * 上传文件方法 * <p> * Title: uploadFile * </p> * <p> * Description: * </p> * * @param fileName * 文件全路径 * @param extName * 文件扩展名,不包含(.) * @param metas * 文件扩展信息 * @return * @throws Exception */ public String uploadFile(String fileName, String extName, NameValuePair[] metas) { String result = null; try { result = storageClient.upload_file1(fileName, extName, metas); } catch (IOException e) { e.printStackTrace(); } catch (MyException e) { e.printStackTrace(); } return result; } /** * 上传文件,传fileName * * @param fileName * 文件的磁盘路径名称 如:D:/image/aaa.jpg * @return null为失败 */ public String uploadFile(String fileName) { return uploadFile(fileName, null, null); } /** * * @param fileName * 文件的磁盘路径名称 如:D:/image/aaa.jpg * @param extName * 文件的扩展名 如 txt jpg等 * @return null为失败 */ public String uploadFile(String fileName, String extName) { return uploadFile(fileName, extName, null); } /** * 上传文件方法 * <p> * Title: uploadFile * </p> * <p> * Description: * </p> * * @param fileContent * 文件的内容,字节数组 * @param extName * 文件扩展名 * @param metas * 文件扩展信息 * @return * @throws Exception */ public String uploadFile(byte[] fileContent, String extName, NameValuePair[] metas) { String result = null; try { result = storageClient.upload_file1(fileContent, extName, metas); } catch (IOException e) { e.printStackTrace(); } catch (MyException e) { e.printStackTrace(); } return result; } /** * 上传文件 * * @param fileContent * 文件的字节数组 * @return null为失败 * @throws Exception */ public String uploadFile(byte[] fileContent) { return uploadFile(fileContent, null, null); } /** * 上传文件 * * @param fileContent * 文件的字节数组 * @param extName * 文件的扩展名 如 txt jpg png 等 * @return null为失败 */ public String uploadFile(byte[] fileContent, String extName) { return uploadFile(fileContent, extName, null); } }第二步:在创一个tool类
package bootpanda.common; import java.io.File; import java.io.IOException; import java.util.Enumeration; import java.util.Properties; import java.util.UUID; import javax.servlet.http.HttpServletRequest; import org.springframework.web.multipart.MultipartFile; /** * 工具类 * @author zw * */ public class Tools { /** * 上传文件的方法。 * @param file * @param request * @return 返回文件的相对路径 */ public static String uploadfile(MultipartFile file,HttpServletRequest request){ String fileName = ""; if (file != null && file.getSize() > 0) { // 处理文件上传 // 获取文件名称(获取的是:文件名.后缀名) String oriName = file.getOriginalFilename(); // 获取文件后缀名 String extName = oriName.substring(oriName.lastIndexOf(".")); // 获取文件名称(获取上传到服务器的文件名称和路径) // 上传文件的时候,文件名称一般可以使用UUID;或者当前时间的long表示(这种做法不合适大并发的应用) fileName = "files/" + UUID.randomUUID().toString() + extName; // 获取文件上传路径(物理路径) String uppath = request.getServletContext().getRealPath("/") + fileName; // 保存文件 try { file.transferTo(new File(uppath)); } catch (IllegalStateException e) { e.printStackTrace(); fileName = ""; } catch (IOException e) { e.printStackTrace(); fileName = ""; } } return fileName; } /** * 获取文件服务器地址 * @return */ public static String getFileServer(){ Properties p = new Properties(); String fileserver = ""; try { p.load(Tools.class.getClassLoader().getResourceAsStream("fileserver.properties")); fileserver = p.getProperty("fileserver"); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return fileserver; } }第三步:resource下创建fdfs_client.properties的配置文件
connect_timeout = 2 network_timeout = 30 charset = UTF-8 # tracker Http port http.tracker_http_port = 80 http.anti_steal_token = no http.secret_key = FastDFS1234567890 # tracker Server address tracker_server = 192.168.1.100:22122第四步:resource下创建fileserver.properties的配置对象
fileserver=http://192.168.1.100/改成自己的ip地址
ckeditor–>skins–>config.js 修改里面的
config.filebrowserImageUploadUrl ='/PANDA/ckeditor/upload' ;对应下面的controller
在jsp页面中,注意ckeditor需要下面四点
1
<script type="text/javascript" src="${pageContext.request.contextPath}/ckeditor/ckeditor.js"></script>2
method="post" enctype="multipart/form-data"3
<textarea id="himgdesc" class="ckeditor" name="himgdesc"></textarea>4
<script type="text/javascript"> CKEDITOR.replace('spotsdesc'); </script> </body>