Http Restful接口接收form-data数据

1;postman配置
在这里插入图片描述
在这里插入图片描述
2;代码

import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import org.apache.log4j.Logger;
import org.apache.tomcat.util.http.fileupload.FileItem;
import org.apache.tomcat.util.http.fileupload.FileItemFactory;
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload;



	@POST
	@Path("/Y5_TestSOA")
	@Consumes({MediaType.MULTIPART_FORM_DATA})
	@Produces("application/json; charset=utf-8")
	public String Y5_TestSOA(@Context HttpServletRequest request) {
		Map<String, String[]> parameterMap = request.getParameterMap();
		System.out.println("Y5_TestSOA start");
		 if (ServletFileUpload.isMultipartContent(request)) {
	        try {
                FileItemFactory factory = new DiskFileItemFactory();
                ServletFileUpload upload = new ServletFileUpload(factory);
                Map<String, List<FileItem>> items = null;
//                    items = upload.parseRequest( request);//key对应的值唯一时使用
                items= upload.parseParameterMap(request);
                List<FileItem> files1= items.get("keyword");//Text格式数据
                if (files1 != null) {
                	System.out.println("keyword is not null");
                    Iterator<FileItem> iter = files1.iterator();
                    while (iter.hasNext()) {
                        FileItem item = iter.next();
                        System.out.println("key is:"+item.getFieldName()+";value is:"+item.getString());
                    }
                }
                String deskPath="C:\\Users\\Administrator\\Desktop\\";
                List<FileItem> files= items.get("file");//File格式数据
                if (files != null) {
                    Iterator<FileItem> iter = files.iterator();
                    while (iter.hasNext()) {
                        FileItem item = iter.next();
                        if (!item.isFormField() && item.getSize() > 0) {
                            OutputStream out = null;
                            InputStream in=null;
                            System.out.println(deskPath+item.getName());
                            out = new BufferedOutputStream(new FileOutputStream(deskPath+item.getName()));
                            in= item.getInputStream();
                	        //创建中转字节数组
                	        byte[] buffer = new byte[1024];
                	        int len=0;
                	        while((len=in.read(buffer))!=-1){//in对象的read方法返回-1为 文件以读取完毕
                		        out.write(buffer,0,len);
                		        buffer = new byte[1024];
                	        }
                	        if(in!=null) {
	                	    	   in.close();
	                	       }
                	        if(out!=null) {
                	        	 out.close();
                	        }
                        }
                    }
                }
	        } catch (Exception e) {
	        }
		 }
		logger.info("Y5_TestSOA  start>>>>>>>>>>>>>>>>>");
		logger.info("************** request *************");
		logger.info("************** request *************");
		logger.info("************** response *************");
		logger.info("************** response *************");
		logger.info("Y5_TestSOA  end>>>>>>>>>>>>>>>>>");
		System.out.println("Y5_TestSOA end");
        return "成功!!!!!!!!!!!!!";
	}

3;效果
本地桌面会出现接收的File

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java的RESTful风格接口中传输PDF文件可以通过以下步骤完成: 1. 首先,需要定义一个RESTful接口,用于接收PDF文件。例如,可以使用JAX-RS框架来定义接口,如下所示: ``` @POST @Path("/upload/pdf") @Consumes(MediaType.MULTIPART_FORM_DATA) public Response uploadPdf(@FormDataParam("file") InputStream fileInputStream, @FormDataParam("file") FormDataContentDisposition contentDispositionHeader) { // 处理上传的PDF文件 } ``` 2. 在客户端,需要使用HTTP POST方法将PDF文件上传到该RESTful接口。可以使用Java的URLConnection或HttpClient来实现。以下是使用URLConnection的示例代码: ``` File pdfFile = new File("path/to/pdf/file.pdf"); URL url = new URL("http://example.com/api/upload/pdf"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoOutput(true); conn.setRequestMethod("POST"); conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=---Boundary"); conn.setChunkedStreamingMode(0); OutputStream outputStream = conn.getOutputStream(); PrintWriter writer = new PrintWriter(new OutputStreamWriter(outputStream, "UTF-8"), true); writer.println("---Boundary"); writer.println("Content-Disposition: form-data; name=\"file\"; filename=\"" + pdfFile.getName() + "\""); writer.println("Content-Type: application/pdf"); writer.println(); Files.copy(pdfFile.toPath(), outputStream); writer.println(); writer.println("---Boundary--"); writer.close(); int responseCode = conn.getResponseCode(); String responseMessage = conn.getResponseMessage(); ``` 在上面的代码中,需要将文件流写入到输出流中,并且在请求头中设置Content-Type为multipart/form-data。另外需要注意,文件流的参数名需要与RESTful接口中的参数名保持一致。 3. 在RESTful接口中,可以使用Java的PDF解析库如iText或PDFBox来处理上传的PDF文件。可以将文件保存到本地或者将其转换为其他格式进行处理。 ``` try { PDDocument document = PDDocument.load(fileInputStream); // 处理PDF文件 document.close(); } catch (IOException e) { e.printStackTrace(); } ``` 以上就是在Java的RESTful风格接口中传输PDF文件的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值