- 论坛徽章:
- 0
|
FastDFS JAVA API中没有InputStrean,OutStream对文件的操作
通过网页上传文件时,ServletInputStream sis=request.getInputStream();
这个输入流sis含有头信息和尾信息,不能直接上传
UploadStream stream=new UploadStream(sis, length);
String[] results=client.upload_file(null, length stream, extName, null);
上传后文件乱码,损坏
必须对sis进行处理,去掉头尾信息
FileOutputStream fos=new FileOutputStream(savepath);
while ((i=sis.readLine(b, 0, 256))!=-1&&length>47) {
length=length-i;
fos.write(b, 0, i);
}
sis.close();
fos.close();
File tmpFile=new File(savepath);
生成文件后再上传
FileInputStream fis=new FileInputStream(tmpFile);
UploadStream stream2=new UploadStream(fis, tmpFile.length());
results=client.upload_file(null, tmpFile.length(), stream2, extName, null);
这样上传的文件是正确的,但是觉得有些麻烦,先必须在WEB服务器上生成文件,有个中转过程,
如果FastDFS有对文件操作的InputStrean,OutStream就好了,用sis读的时候,outsteam进行写,直接写到FastDFS上,如:
while ((i=sis.readLine(b, 0, 256))!=-1&&length>47) {
length=length-i;
fdfsoutStream.write(b, 0, i); //FastDFS的输入流
}
希望FastDFS能够有这样的API,或者对上传文件有更好的操作办法,请不吝赐教!!! |
|