HttpURLConnection 2m一下的文件无法上传

发布于 2021-11-30 09:37:53 字数 1418 浏览 939 评论 1

server端接受文件的代码


out = new FileOutputStream(f, true);
content = req.getInputStream();
int read = 0;
final byte[] bytes = new byte[CommonUtils.BUFFER_LENGTH];
while ((read = content.read(bytes)) != -1)
	out.write(bytes, 0, read);

start = f.length();

客户端代码


HttpURLConnection connection = getConnect(setUrl(fileUploadMap, uploadUrl));
connection.setRequestMethod("POST");
connection.setDoOutput(true);

// pos上回读取传送的位置 blob每次读取多少字节
String range = "bytes " + start + "-" + (start + 153600) + "/" + file.length();
connection.setRequestProperty("content-range", range);

// 获取输出流对象,预备上传文件
OutputStream os = connection.getOutputStream();

FileInputStream fis = new FileInputStream(file);
int count = 0;
if(file.length() > 10240){
	while ((count = fis.read(bytes)) != -1)
		os.write(bytes, 0, count);
}else{
	while((count = fis.read()) != -1)
		os.write(bytes, 0, count);
}
fis.close();
os.flush();



思路分割文件之后按固定字节上传到服务器,服务器会生成一个临时文件,每次上传会先获取token就是临时文件名,包含文件总的大小,可以获取到已保存的大小,给到客户端客户端决定从什么位置开始再次上传,目前分割文件还没做,服务器端是经过网页请求测试大小文件,重新上传都ok的,客户端代码写到了获取token获取再次上传文件的位置以及上传,当测试上传文件的时候发现上传2m一下的文件,客户端debug,outputstream.write的时候有内容,在服务器request.getinputStream获取不到,(read = content.read(bytes)) != -1这里判断直接false了,请问大家这是怎么回事啊??!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

冷默言语 2021-12-01 17:58:26
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public void SteamUpload(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	doOptions(req, resp);
	InputStream content = null;
	content = req.getInputStream();
	final String token = req.getParameter(CommonUtils.TOKEN_FIELD);
	final String fileName = new String(req.getParameter(CommonUtils.FILE_NAME_FIELD).getBytes("ISO-8859-1"),"utf-8");

搜索看到有说过滤request之后得不到inputstream的,就想试试把request.getinputstream放到最前面,真就就可以了,不清楚为什么,还要再看下servletRequest

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文