storage:
local:
uploadserver: http://127.0.0.1/FileServer/
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix = "storage.local")
public class LocalStorageConfig {
public static final String PROJECT_NAME = "demo";
private String uploadserver;
public String getUploadserver() {
return uploadserver;
}
public void setUploadserver(String fileserver) {
this.uploadserver = fileserver;
}
public String getLoginUrl() {
return uploadserver + "login";
}
public String getUploadUrl() {
return uploadserver + "fileUpload";
}
public String getAccessUrl() {
return uploadserver + "uploads";
}
}
@Autowired
private LocalStorageService localStorageService;
@RequestMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file) throws Exception {
if (file.isEmpty()) {
return "error"
}
String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
String url = localStorageService.fileUpload(file.getBytes(), suffix);
if (org.apache.commons.lang.StringUtils.isBlank(url)) {
throw new RRException("上传文件失败");
}
return url;
}
import java.io.File;
public interface LocalStorageService {
String login() throws Exception;
String fileUpload(File file, String postfix) throws Exception;
String fileUpload(byte[] bytes, String postfix) throws Exception;
}
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
@Service("localStorageService")
public class LocalStorageServiceImpl implements LocalStorageService {
private static final Logger logger = LoggerFactory.getLogger(LocalStorageServiceImpl.class);
@Autowired
private LocalStorageConfig config;
private String[] session = null;
@Override
public String login() throws Exception {
session = null;
Map<String, String> parMap = new HashMap<String, String>();
parMap.put("username", "admin");
parMap.put("signature", "123456");
parMap.put("project", LocalStorageConfig.PROJECT_NAME);
String resultSet = null;
try {
HttpURLConnection huc = (HttpURLConnection) new URL(config.getLoginUrl()).openConnection();
huc.setDoOutput(true);
huc.setRequestMethod("POST");
String parameter = "";
for (String key : parMap.keySet()) {
parameter += key + "=" + java.net.URLEncoder.encode(parMap.get(key), "utf-8") + "&";
}
parameter = parameter.substring(0, parameter.length() - 1);
OutputStream os = huc.getOutputStream();
os.write(parameter.getBytes("utf-8"));
os.flush();
os.close();
BufferedReader br = new BufferedReader(new InputStreamReader(huc.getInputStream()));
huc.connect();
String line = null;
resultSet = br.readLine();
while ((line = br.readLine()) != null) {
resultSet += line;
}
br.close();
resultSet = resultSet.trim();
logger.debug(JSON.toJSONString(huc.getHeaderFields()));
session = huc.getHeaderField("Set-Cookie").split(";");
logger.debug("sessionId:" + session[0]);
huc.disconnect();
} catch (Exception e) {
logger.error("文件服务器无法登陆: " + config.getLoginUrl(), e);
}
return resultSet;
}
@Override
public String fileUpload(File file, String postfix) throws Exception {
byte[] buffer = null;
try {
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);
byte[] b = new byte[1000];
int n;
while ((n = fis.read(b)) != -1) {
bos.write(b, 0, n);
}
fis.close();
bos.close();
buffer = bos.toByteArray();
} catch (FileNotFoundException e) {
logger.error(e.getLocalizedMessage(), e);
} catch (IOException e) {
logger.error(e.getLocalizedMessage(), e);
}
return fileUpload(buffer, postfix);
}
@Override
public String fileUpload(byte[] bytes, String postfix) throws Exception {
String resultSet = null;
if (!"true".equals(login())) {
return null;
}
try {
HttpURLConnection huc = (HttpURLConnection) new URL(config.getUploadUrl()).openConnection();
huc.setRequestMethod("POST");
huc.setDoInput(true);
huc.setDoOutput(true);
huc.setUseCaches(false);
if ((session == null || session.length == 0) && !"true".equals(login())) {
throw new RuntimeException("文件服务器未登录");
}
huc.setRequestProperty("Cookie", session[0]);
huc.setRequestProperty("Connection", "Keep-Alive");
huc.setRequestProperty("Charset", "UTF-8");
String boundary = "----------" + System.currentTimeMillis();
huc.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
StringBuilder sb = new StringBuilder();
sb.append("--");
sb.append(boundary);
sb.append("\r\n");
sb.append("Content-Disposition: form-data; name=\"file\"; filename=\"uploaded_file." + postfix + "\"\r\n");
sb.append("Content-Type: application/octet-stream\r\n\r\n");
OutputStream out = new DataOutputStream(huc.getOutputStream());
out.write(sb.toString().getBytes("utf-8"));
out.write(bytes, 0, bytes.length);
byte[] foot = ("\r\n--" + boundary + "--\r\n").getBytes("utf-8");
out.write(foot);
out.flush();
out.close();
BufferedReader br = new BufferedReader(new InputStreamReader(huc.getInputStream()));
huc.connect();
String line = null;
resultSet = br.readLine();
while ((line = br.readLine()) != null) {
resultSet += line + "\r\n";
}
br.close();
resultSet = resultSet.trim();
huc.disconnect();
} catch (Exception e) {
logger.error(e.getLocalizedMessage(), e);
return null;
}
if (StringUtils.isBlank(resultSet)) {
return null;
} else {
return config.getAccessUrl() + resultSet;
}
}
}
uploadingCheckPic: function () {
var formData = new FormData();
var file = $("#checkPicUpload")[0].files[0];
formData.append("file", file);
$.ajax({
type: "POST",
url: "",
contentType: false,
processData: false,
data: formData,
success: function (r) {
if (r.code == 0) {
} else {
}
$("#checkPicUpload")[0].value = "";
}
});
},