1,上传端
private boolean uploadPackage(HttpClient httpClient, byte[] byteBuffer, long[] pos) {
SwingLog.info(TAG, "uploadPackage start...");
final String remoteUrl = this.targetURL+ REMOTE_POST_PATH; //getModemLogServerURL() + REMOTE_POST_PATH; ---测试使用,暂时写死
final HttpPost httpPost = new HttpPost(remoteUrl);
ContentBody contentBody = new ByteArrayBody(byteBuffer,this.fileName);
MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("test", contentBody);
httpPost.setEntity(reqEntity);
response = httpClient.execute(httpPost);
HttpEntity responseEntity = response.getEntity();
}
2,下载端
private boolean saveFile(HttpServletRequest request, FileInfo fileInfo,
FileSaveHandle handle) {
try {
if (request.getCharacterEncoding() == null) {
// 设置编码格式
request.setCharacterEncoding("UTF-8");
}
String storeFileDir = fileInfo.getSavePath();
File fileDir = new File(storeFileDir);
if (!fileDir.isDirectory()) {
// 不存在则新建文件夹
if (!fileDir.mkdirs()) {
logger.info("Create dirs ERROR!");
}
}
String path = StringUtils.EMPTY;
long startTime = System.currentTimeMillis();
// 将当前上下文初始化给 CommonsMutipartResolver (多部分解析器)
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(
request.getSession().getServletContext());
// 检查form中是否有enctype="multipart/form-data"
if (multipartResolver.isMultipart(request)) {
// 将request变成多部分request
MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest) request;
// 获取multiRequest 中所有的文件名
Map<String, MultipartFile> multifiles = multiRequest
.getFileMap();
for (Map.Entry<String, MultipartFile> fileEntry : multifiles
.entrySet()) {
// 一次遍历所有文件
MultipartFile multipartFile = fileEntry.getValue();
if (multipartFile != null) {
String filename = multipartFile.getOriginalFilename();
if (StringUtils.isNotBlank(filename)) {
// 用于提取任务名
path = storeFileDir + File.separator + filename;
return handle.process(multipartFile, fileInfo,
filename, path, startTime);
}
}
}
logger.debug("saveFile end......");
return true;
} else {
logger.warn("The enctype is not 'multipart/form-data'!");
return false;
}
} catch (Exception e) {
logger.error("save file with exception:" + e.getMessage());
return false;
}
}
//保存方法
@Override
public boolean process(MultipartFile multipartFile,
FileInfo fileInfo, String filename, String path,
long startTime) {
try {
byte[] bytes = multipartFile.getBytes();
// 随机写入字节流到指定文件
if (!randomWriteFile(path, bytes)) {
logger.error("randomWriteFile failed !");
return false;
}
long endTime = System.currentTimeMillis();
logger.info(String
.format("Success to save the file[%s] to the path[%s] spend [%s]ms.",
filename, path, endTime - startTime));
return true;
} catch (Exception e) {
logger.error("FileSaveHandle Error: " + e.getMessage());
return false;
}
}