UeditorServiceFastdfsImpl.java 4.29 KB
Newer Older
liqin's avatar
liqin committed
1
package cn.chnmuseum.party.service.impl;
liqin's avatar
liqin committed
2

liqin's avatar
liqin committed
3
import cn.chnmuseum.party.common.dfs.FastDFSUtils;
liqin's avatar
liqin committed
4 5 6 7 8 9 10 11 12 13
import com.baidu.ueditor.define.AppInfo;
import com.baidu.ueditor.define.BaseState;
import com.baidu.ueditor.define.MultiState;
import com.baidu.ueditor.define.State;
import com.baidu.ueditor.extend.UeditorService;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;

import javax.servlet.http.HttpServletRequest;
liqin's avatar
liqin committed
14
import java.io.ByteArrayInputStream;
liqin's avatar
liqin committed
15
import java.io.IOException;
liqin's avatar
liqin committed
16
import java.io.InputStream;
liqin's avatar
liqin committed
17 18 19
import java.util.Map;

/**
liqin's avatar
liqin committed
20
 * UeditorService的FastDFS实现
liqin's avatar
liqin committed
21 22 23 24
 */
@Service
public class UeditorServiceFastdfsImpl implements UeditorService {

liqin's avatar
liqin committed
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
    @Override
    public com.baidu.ueditor.extend.MultipartFile getMultipartFile(String filedName, HttpServletRequest request) {
        com.baidu.ueditor.extend.MultipartFile resultFile = null;
        try {
            MultipartHttpServletRequest multipartHttpservletRequest = (MultipartHttpServletRequest) request;
            MultipartFile multipartFile = multipartHttpservletRequest.getFile(filedName);
            if (multipartFile != null && !multipartFile.isEmpty()) {
                resultFile = new com.baidu.ueditor.extend.StandardMultipartFile(filedName, multipartFile.getInputStream(),
                        multipartFile.getOriginalFilename(), multipartFile.getSize());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return resultFile;
    }

    @Override
    public State saveFileByInputStream(com.baidu.ueditor.extend.MultipartFile multipartFile, long maxSize) {
        State state;
        try {
            if (multipartFile.getSize() > maxSize) {
                return new BaseState(false, AppInfo.MAX_SIZE);
            }
            Map<String, Object> uploadResult;
            String originalFileName = multipartFile.getOriginalFilename();
liqin's avatar
liqin committed
50
            uploadResult = FastDFSUtils.uploadUeImage(multipartFile.getInputStream(), multipartFile.getSize(), originalFileName);
liqin's avatar
liqin committed
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
            if ((Boolean) uploadResult.get("status")) {
                state = new BaseState(true);
                state.putInfo("size", uploadResult.get("size").toString());
                state.putInfo("title", uploadResult.get("title").toString());
                state.putInfo("url", uploadResult.get("url").toString());
                return state;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return new BaseState(false, AppInfo.IO_ERROR);
    }

    @Override
    public State saveBinaryFile(InputStream inputStream, long fileSize, String fileName) {
        State state;

liqin's avatar
liqin committed
68
        Map<String, Object> uploadResult = FastDFSUtils.uploadUeImage(inputStream, fileSize, fileName);
liqin's avatar
liqin committed
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
        if ((Boolean) uploadResult.get("status")) {
            state = new BaseState(true);
            state.putInfo("size", uploadResult.get("size").toString());
            state.putInfo("title", uploadResult.get("title").toString());
            state.putInfo("url", uploadResult.get("url").toString());
            // 把上传的文件信息记入数据库
            return state;
        }

        return new BaseState(false, AppInfo.IO_ERROR);
    }

    @Override
    public State saveBinaryFile(byte[] data, String fileName) {
        State state;

        ByteArrayInputStream baos = new ByteArrayInputStream(data);
liqin's avatar
liqin committed
86
        Map<String, Object> uploadResult = FastDFSUtils.uploadUeImage(baos, 0L, fileName);
liqin's avatar
liqin committed
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
        if ((Boolean) uploadResult.get("status")) {
            state = new BaseState(true);
            state.putInfo("size", uploadResult.get("size").toString());
            state.putInfo("title", uploadResult.get("title").toString());
            state.putInfo("url", uploadResult.get("url").toString());
            // 把上传的文件信息记入数据库
            return state;
        }

        return new BaseState(false, AppInfo.IO_ERROR);
    }

    @Override
    public State listFile(String[] allowFiles, int start, int pageSize) {
        // 把计入数据库中的文件信息读取出来,返回即可

        // 下面的代码,仅作示例
        State state = new MultiState(true);
        state.putInfo("start", start);
        state.putInfo("total", 0);
        return state;
    }
liqin's avatar
liqin committed
109
}