原因:文件大于3M直接上传服务器,文件太大服务器直接直接接收不了,所以进行文件拆分;
拆分重点:读和写用到的函数----读用FileInputStream,写用FileOutputStream!
//输入:大文件路径
File taskfile = new File(taskfilePath);
InputStream file = new FileInputStream(taskfile);
//分批次上传任务
try {
long allSize = fileSize(taskfile);
//UploadPartSize:拆分的小文件大小
long num = allSize/UploadPartSize;
if(allSize%UploadPartSize != 0)
num++;
for(int i=0;i<num;i++) {
//上传任务
offset = i*UploadPartSize;
last="0";
int partSize = UploadPartSize;
if(i==num-1) {
last = "1";
partSize = (int)allSize%UploadPartSize;
}
byte[] buffer = new byte[partSize];
file.read(buffer);
File bufferStr = new File(zipfilePath + File.separator + "buffer");
if(!bufferStr.exists())
bufferStr.createNewFile();
//如果用下面的writeoutput,写入的大小总小于buffer的大小,不知道原因..切记只用fileoutput;
//或者说读写要用一套函数,不要乱用!读用FileInputStream,写用FileOutputStream!
//OutputStream out = new WriterOutputStream(fw);
OutputStream out = new FileOutputStream(bufferStr);
out.write(buffer);
out.flush();
out.close();
//上传操作**********
}
//校验总的上传的文件大小**********
} catch (Exception e) {
e.printStackTrace();
}