前段时间时间,我写了初步认识restful接口和基于restful服务端的一些接口,今天我将继续写服务端的几种接口
1)、restful接口返回文件流
@GET
@Path("/download/{type}/{massId}")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
// 返回方式为流
public byte[] downloadRestFile(@PathParam("type") String type,@PathParam("massId") String massId,
@Context HttpServletRequest request,
@Context HttpServletResponse response) throws Throwable {
FileInputStream fis = null;
fis = new FileInputStream(new File("D:\\test.csv"));
response.setHeader("Content-Disposition", "attachment;filename=test.csv" );// 为文件命名
try {
byte[] b = new byte[fis.available()];
fis.read(b);
response.addHeader("content-type", "application/csv");
return b;
} catch (FileNotFoundException e) {
e.printStackTrace();
return null;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
2)、通过Multipart接受文件和数据并且可以返回json数据
@POST
@Path("/createTest")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.MULTIPART_FORM_DATA)
public String createTest(@Context HttpServletRequest request,
@Context HttpServletResponse response) throws Exception {
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods","POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setContentType("text/html;charset=UTF-8");
StringBuffer str = new StringBuffer();
JSONObject json=new JSONObject();
Map map = new HashMap();
try {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
File directory = null;
List<FileItem> items = new ArrayList();
try {
items = upload.parseRequest(request);
// 得到所有的文件
Iterator<FileItem> it = items.iterator();
while (it.hasNext()) {
FileItem fItem = (FileItem) it.next();
String fName = "";
Object fValue = null;
if (fItem.isFormField()) { // 普通文本框的值
fName = fItem.getFieldName();
fValue = fItem.getString("UTF-8");
map.put(fName, fValue);
} else { // 获取上传文件的值
fName = fItem.getFieldName();
fValue = fItem.getInputStream();
String name = fItem.getName();
if(name != null && !("".equals(name))) {
name = name.substring(name.lastIndexOf(File.separator) + 1);
directory = new File(("e://test//PDF//"));
directory.mkdirs();
String filePath = ("e://testPDF//")+ File.separator + name;
InputStream is = fItem.getInputStream();
FileOutputStream fos = new FileOutputStream(filePath);
byte[] buffer = new byte[1024];
while (is.read(buffer) > 0) {
fos.write(buffer, 0, buffer.length);
}
fos.flush();
fos.close();
}
}
}
} catch (Exception e) {
json.put("error", "3");
json.put("errmsg", "读取http请求属性值出错!");
e.printStackTrace();
}
// 数据处理
//这里可以获得传递过来的参数,或者进行签名验证
//填写逻辑
json.put("error", "0");
json.put("errmsg", "");
} catch (Exception ex) {
json.clear();
ex.printStackTrace();
json.put("errno", "1");
json.put("errmsg", ex.getMessage());
}
System.out.println("返回json:"+json.toString());
return json.toString();
}