关于http连接上传文件的问题
小弟在做J2ME程序上传文件时遇到一个稀奇的事情,客户端程序发送了二进制数据过去,但是服务器端接收文件最多就2016个字节,多了就压根收不到了。服务器端是ASP的,手机端的部分代码如下:
核心代码是这样的
public void readFile(String fileName) { //读文件
try {
System.out.println(fileName);
InputStream is = this.getClass().getResourceAsStream(fileName); //找到文件,定义输入流
byte[] data = new byte[20480]; //开个字节数组,现在大小20K,服务器端肯定不会接到,改成2016以下,就能产生文件了
int length = is.read(data, 0, 20480); //计算流数据长度
upload(data, length); //调用upload
is.close();
} catch (Exception e) {
}
}
public void upload(byte[] data, int length) throws
IOException {
String url = "http://192.168.3.105/mobi/login/up/savetofile.asp "; //测试地址
try {
sc = (HttpConnection) Connector.open(url); //定义连接
sc.setRequestProperty( "Content-Type ", "application/octet-stream "); //设置http头
sc.setRequestProperty( "Content-Length ", String.valueOf(length));
OutputStream output = sc.openOutputStream();
output.write(data, 0, length); //写进输入流,这里没问题,如果前面开字节数组是20K,并且文件也有20K的数据,肯定能全发出去了。
output.close();
} catch (IOException e) {
// TODO 自动生成 catch 块
throw e;
}
}
上面客户端程序都正常运行,无异常错误。
当我将字节数组定义大于2016的时候,服务器压根就接收不到数据,如果定义成等于或小于2016字节数的时候,服务器端能收到一个等于或小于2016字节的文件。
举例说明:假如我上传文件2200字节,开数组2200,那么服务器压根没反应,但查看手机流量,确实发出去2200个字节。而如果我将字节数组开到等于2016,那么服务器端就能接收到一个大小为2016的文件,原来2200字节的数据,到2016的地方就停止接收了。
总之服务器端最多只接收2016个字节的数据,百思不得其解。请问,大家遇到过这样的问题吗?
请不吝赐教!
小弟谢谢各位了!
------解决方案--------------------对,就是这个意思,其实这样做是比较合理的方法,假设有个2M的大文件,一下载进来内存不暴才怪
------解决方案--------------------应该是你的发送方式有问题