Delphi使用TNetHTTPClient上传文件java接收测试
上传客户端
新建一个应用,拖入一个TButton按扭,一个TMemo多行文件显示框,一个TNetHttpClient,一个OpenDialog文件打开对话框。
双击按扭添加代码
uses System.Net.Mime ;
procedure TForm1.Button1Click(Sender: TObject);
var
formData: TMultipartFormData;
AResponseContent: TStringStream;
begin
if OpenDialog1.Execute then
begin
formData := TMultipartFormData.Create;
AResponseContent := TStringStream.Create('', TEncoding.GetEncoding(65001));
try
formData.AddFile('file1', OpenDialog1.FileName);
with self.NetHTTPClient1 do
begin
ConnectionTimeout := 2000;
ResponseTimeout := 10000;
AcceptCharSet := 'utf-8';
AcceptEncoding := '65001';
AcceptLanguage := 'zh-CN';
ContentType := 'multipart/form-data';
UserAgent := 'Embarcadero URI Client/1.0';
try
Memo1.Lines.Add('上传文件 ' + OpenDialog1.FileName);
Post('http://localhost:9001/filesrv/file/upload', formData, AResponseContent);
Application.ProcessMessages;
except
on E: Exception do
Memo1.Lines.Add('上传失败:' + E.Message);
end;
Memo1.Lines.Add(AResponseContent.DataString);
end;
finally
AResponseContent.Free;
formData.Free;
end;
end;
end;
java接收端
package com.lyg.file.controller;
import com.alibaba.fastjson.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
@Controller
@RequestMapping(value = "/file")
public class MainController {
private final static Logger log = LoggerFactory.getLogger( MainController.class);
@Value("${filepath.path-images}")
private String path_images;
//文件上传
//参数为file1
@RequestMapping("/upload")
@ResponseBody
protected JSONObject uploadTest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, Exception {
log.info("upload begin......");
JSONObject jsonResult=new JSONObject();
jsonResult.put("code","0000");
jsonResult.put("message","失败,未知错误!");
try {
// 获取文件部件part
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
// 获得文件:
MultipartFile part = multipartRequest.getFile("file1");
// 获取文件服务器头部信息
// String root = request.getRealPath("/upload");
//String root = Consts.FILE_PATH_HT_IMAGES;
String root = path_images;
File file = new File(root);
// 如果文件夹不存在则创建
if (!file.exists() && !file.isDirectory()) {
// System.out.println("文件夹不存在!");
file.mkdir();
} else {
// System.out.println("文件夹已存在!");
}
String name = part.getOriginalFilename();
String ext = name.substring(name.lastIndexOf("."), name.length());
long currentTime = System.currentTimeMillis();
SimpleDateFormat formatter = new SimpleDateFormat("yyMMddHHmmssSSS");
Date date = new Date(currentTime);
String dateStr = formatter.format(date);
// String filename = dateStr+"."+ext;
String filename = root + "\\" + dateStr + ext;
part.transferTo(new File(filename));
jsonResult.put("code","0001");
jsonResult.put("message","上传成功.");
log.info("上传成功");
} catch (Exception e) {
log.info("上传失败");
log.error(e.getMessage(), e);
}
log.info(jsonResult.toString());
return jsonResult;
}
}