要做一个上传的东西啊!不能用第三方的
我就找了资料大概原理就是从request里面取得数据
然后拆分,去掉跟文件无关的内容,然后把文件内容
都先放入一个bufferstring然后在把这个bufferstring写如
要上传的目标路径啊现在功能基本实现了啊但是还有几个地方
不知道怎么处理啊希望得到大家的帮助啊谢谢啊
int totalBytes = request.getContentLength();
//说明文件过小就不上传了啊
if (totalBytes < 300) {
return false;
//我这里设置多少就能上传多大的文件
//我希望修改成那种自动的能根据上传文件的大小自动变化的
//但是我不知道怎么写啊
byte oneLine[] = new byte[1024 * 20]; //用于每次读取的数据
我原本想设置大小是 totalBytes来着啊可是发现如果文件大的时候
就死了啊!我不太明白这个地方因为totalBytes这个的大小
跟文件大小不知道是什么关系因为我的文件如是一个字节这个地方得到
数值是190但是如果我的文件是空的这个地方反而是200多了我测试了好几次
都是这样不知道为什么啊
ServletInputStream sis = request.getInputStream();
//返回实际读取的字符数,并把数据写到oneLine中
int i = sis.readLine(oneLine, 0, oneLine.length);
while (i != -1) {
//生成字符串
lineStr = newLine(oneLine, 0, i, charEncode);
if (lineStr.indexOf(getBoundary() + "--") >= 0) {
break;
}
//分离数据
//文件的内容,表单元素及表单元素对应的值
sis.readLine(oneLine, 0, oneLine.length); //读取的数据类似"Content-Type: text/plain"
sis.readLine(oneLine, 0, oneLine.length); //空行
//建立文件输出
//开始读上传文件数据
i = sis.readLine(oneLine, 0, oneLine.length); while (i != -1) {
totalSize = i + totalSize;
lineStr = newLine(oneLine, 0, i, charEncode);
// 取得
if (lineStr.indexOf(getBoundary()) < 0) {
appendLn(sumBuffer, lineStr);
}
if (lineStr.indexOf(getBoundary()) >= 0) { break
}
}
//文件区的数据读取完毕
break;
}
i = sis.readLine(oneLine, 0, oneLine.length);
}
i = sis.readLine(oneLine, 0, oneLine.length);
我就找了资料大概原理就是从request里面取得数据
然后拆分,去掉跟文件无关的内容,然后把文件内容
都先放入一个bufferstring然后在把这个bufferstring写如
要上传的目标路径啊现在功能基本实现了啊但是还有几个地方
不知道怎么处理啊希望得到大家的帮助啊谢谢啊
int totalBytes = request.getContentLength();
//说明文件过小就不上传了啊
if (totalBytes < 300) {
return false;
//我这里设置多少就能上传多大的文件
//我希望修改成那种自动的能根据上传文件的大小自动变化的
//但是我不知道怎么写啊
byte oneLine[] = new byte[1024 * 20]; //用于每次读取的数据
我原本想设置大小是 totalBytes来着啊可是发现如果文件大的时候
就死了啊!我不太明白这个地方因为totalBytes这个的大小
跟文件大小不知道是什么关系因为我的文件如是一个字节这个地方得到
数值是190但是如果我的文件是空的这个地方反而是200多了我测试了好几次
都是这样不知道为什么啊
ServletInputStream sis = request.getInputStream();
//返回实际读取的字符数,并把数据写到oneLine中
int i = sis.readLine(oneLine, 0, oneLine.length);
while (i != -1) {
//生成字符串
lineStr = newLine(oneLine, 0, i, charEncode);
if (lineStr.indexOf(getBoundary() + "--") >= 0) {
break;
}
//分离数据
//文件的内容,表单元素及表单元素对应的值
sis.readLine(oneLine, 0, oneLine.length); //读取的数据类似"Content-Type: text/plain"
sis.readLine(oneLine, 0, oneLine.length); //空行
//建立文件输出
//开始读上传文件数据
i = sis.readLine(oneLine, 0, oneLine.length); while (i != -1) {
totalSize = i + totalSize;
lineStr = newLine(oneLine, 0, i, charEncode);
// 取得
if (lineStr.indexOf(getBoundary()) < 0) {
appendLn(sumBuffer, lineStr);
}
if (lineStr.indexOf(getBoundary()) >= 0) { break
}
}
//文件区的数据读取完毕
break;
}
i = sis.readLine(oneLine, 0, oneLine.length);
}
i = sis.readLine(oneLine, 0, oneLine.length);
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货