mirror of
https://github.com/happyfish100/fastdfs-client-java.git
synced 2026-09-21 21:39:06 +00:00
56 lines
1.4 KiB
Java
56 lines
1.4 KiB
Java
package org.csource.fastdfs;
|
|
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.OutputStream;
|
|
|
|
/**
|
|
* Upload file by stream
|
|
*
|
|
* @author zhouzezhong & Happy Fish / YuQing
|
|
* @version Version 1.11
|
|
*/
|
|
public class UploadStream implements UploadCallback {
|
|
private InputStream inputStream; //input stream for reading
|
|
private long fileSize = 0; //size of the uploaded file
|
|
|
|
/**
|
|
* constructor
|
|
*
|
|
* @param inputStream input stream for uploading
|
|
* @param fileSize size of uploaded file
|
|
*/
|
|
public UploadStream(InputStream inputStream, long fileSize) {
|
|
super();
|
|
this.inputStream = inputStream;
|
|
this.fileSize = fileSize;
|
|
}
|
|
|
|
/**
|
|
* send file content callback function, be called only once when the file uploaded
|
|
*
|
|
* @param out output stream for writing file content
|
|
* @return 0 success, return none zero(errno) if fail
|
|
*/
|
|
public int send(OutputStream out) throws IOException {
|
|
long remainBytes = fileSize;
|
|
byte[] buff = new byte[256 * 1024];
|
|
int bytes;
|
|
while (remainBytes > 0) {
|
|
try {
|
|
if ((bytes = inputStream.read(buff, 0, remainBytes > buff.length ? buff.length : (int) remainBytes)) < 0) {
|
|
return -1;
|
|
}
|
|
} catch (IOException ex) {
|
|
ex.printStackTrace();
|
|
return -1;
|
|
}
|
|
|
|
out.write(buff, 0, bytes);
|
|
remainBytes -= bytes;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
}
|