request 上传文件

近期,requests.post上传文件时,status_code返回200,服务器校验时返回400,提示文件为空,但之前的处理逻辑中已进行了文件大小的判断,若文件为空,则直接返回失败。
debug后发现当第一次上传失败时,加载的files已经无效了。即,在try..except...中需要重新加载files。

{'msg': '文件不能为空', 'code': 400, 'data': None}
file_size = os.path.getsize(csv_dir + file_name)
if file_size <= 0:
    return False
files = {'file': open(csv_dir + file_name, 'rb')}
response = requests.post(url, files=files, headers={'Connection': 'close'}, verify=False)
status_code = response.status_code
if 200 == status_code and 200 == response.json()['code']:
	return True
在Java中解析request上传文件主要是通过使用Servlet中的MultipartConfig注解和HttpServletRequest的getPart()方法来实现。 首先,在Servlet中添加MultipartConfig注解以启用文件上传功能。在该注解中,可以指定上传文件的最大大小、临时文件存储路径等配置信息。 接下来,在Servlet中的doPost()或doPut()方法中,通过HttpServletRequest的getPart()方法获取上传的文件的Part对象。可以通过getPart()方法的参数传入表单中文件的name属性值来定位到具体的文件。 通过Part对象,可以获取上传文件的相关信息,如文件名、文件大小等。同时,可以通过Part的getInputStream()方法获取文件的输入流,从而读取文件的内容。 以下是一个简单的Java代码示例,用于解析request上传的文件: ```java @WebServlet(urlPatterns = "/upload") @MultipartConfig(maxFileSize = 1024*1024*5, maxRequestSize = 1024*1024*10) public class FileUploadServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Part filePart = request.getPart("file"); // 获取上传文件的Part对象 String fileName = filePart.getSubmittedFileName(); // 获取上传文件的文件名 long fileSize = filePart.getSize(); // 获取上传文件的大小 // 保存上传文件到指定路径 InputStream inputStream = filePart.getInputStream(); FileOutputStream outputStream = new FileOutputStream("保存路径/文件名"); byte[] buffer = new byte[4096]; int bytesRead; while ((bytesRead = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, bytesRead); } outputStream.close(); inputStream.close(); response.getWriter().println("文件上传成功!"); } } ``` 需要注意的是,为了在Servlet中使用MultipartConfig注解,需要在web.xml或servlet注解配置中使用支持Servlet 3.0 API的容器(如Tomcat 7或以上版本)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值