转载:FastDFS的配置、部署与API使用解读(3)以流的方式上传文件的客户端代码
2012-12-07 10:02
1261 查看
本文转载自:诗商·柳惊鸿CSDN博客,链接为:http://blog.csdn.net/poechant/article/details/7213536
转载目的仅仅为方便博主自己学习。
调用的API为:
String[] upload_file(
String group_name,//组名,不指定则可设为null
long file_size,//文件大小,必须制定
UploadCallback callback,//回调
String file_ext_name,
NameValuePair[] meta_list
)
[java]
view plaincopyprint?
/**
* Upload File to DFS, directly transferring java.io.InputStream to java.io.OutStream
* @author Poechant
* @email zhongchao.ustc@gmail.com
* @param fileBuff, file to be uploaded.
* @param uploadFileName, the name of the file.
* @param fileLength, the length of the file.
* @return the file ID in DFS.
* @throws IOException
*/
public String[] uploadFileByStream(InputStream inStream, String uploadFileName,long fileLength)
throws IOException {
String[] results = null;
String fileExtName = "";
if (uploadFileName.contains(".")) {
fileExtName = uploadFileName.substring(uploadFileName.lastIndexOf(".") +1);
} else {
logger.warn("Fail to upload file, because the format of filename is illegal.");
return results;
}
TrackerClient tracker = new TrackerClient();
TrackerServer trackerServer = tracker.getConnection();
StorageServer storageServer = null;
StorageClient1 client = new StorageClient1(trackerServer, storageServer);
NameValuePair[] metaList = new NameValuePair[3];
metaList[0] = new NameValuePair("fileName", uploadFileName);
metaList[1] =
new NameValuePair("fileExtName", fileExtName);
metaList[2] = new NameValuePair("fileLength", String.valueOf(fileLength));
try {
// results[0]: groupName, results[1]: remoteFilename.
results = client.upload_file(null, fileLength,new UploadFileSender(inStream), fileExtName, metaList);
} catch (Exception e) {
logger.warn("Upload file \"" + uploadFileName +"\"fails");
}
trackerServer.close();
return results;
}
其中的UploadFileSender是一个实现了UploadCallback接口的类:
[java]
view plaincopyprint?
private staticclass UploadFileSender
implements UploadCallback {
private InputStream inStream;
public UploadFileSender(InputStream inStream) {
this.inStream = inStream;
}
public int send(OutputStream out)throws IOException {
int readBytes;
while((readBytes = inStream.read()) >0) {
out.write(readBytes);
}
return 0;
}
}
转载目的仅仅为方便博主自己学习。
调用的API为:
String[] upload_file(
String group_name,//组名,不指定则可设为null
long file_size,//文件大小,必须制定
UploadCallback callback,//回调
String file_ext_name,
NameValuePair[] meta_list
)
[java]
view plaincopyprint?
/**
* Upload File to DFS, directly transferring java.io.InputStream to java.io.OutStream
* @author Poechant
* @email zhongchao.ustc@gmail.com
* @param fileBuff, file to be uploaded.
* @param uploadFileName, the name of the file.
* @param fileLength, the length of the file.
* @return the file ID in DFS.
* @throws IOException
*/
public String[] uploadFileByStream(InputStream inStream, String uploadFileName,long fileLength)
throws IOException {
String[] results = null;
String fileExtName = "";
if (uploadFileName.contains(".")) {
fileExtName = uploadFileName.substring(uploadFileName.lastIndexOf(".") +1);
} else {
logger.warn("Fail to upload file, because the format of filename is illegal.");
return results;
}
TrackerClient tracker = new TrackerClient();
TrackerServer trackerServer = tracker.getConnection();
StorageServer storageServer = null;
StorageClient1 client = new StorageClient1(trackerServer, storageServer);
NameValuePair[] metaList = new NameValuePair[3];
metaList[0] = new NameValuePair("fileName", uploadFileName);
metaList[1] =
new NameValuePair("fileExtName", fileExtName);
metaList[2] = new NameValuePair("fileLength", String.valueOf(fileLength));
try {
// results[0]: groupName, results[1]: remoteFilename.
results = client.upload_file(null, fileLength,new UploadFileSender(inStream), fileExtName, metaList);
} catch (Exception e) {
logger.warn("Upload file \"" + uploadFileName +"\"fails");
}
trackerServer.close();
return results;
}
/** * Upload File to DFS, directly transferring java.io.InputStream to java.io.OutStream * @author Poechant * @email zhongchao.ustc@gmail.com * @param fileBuff, file to be uploaded. * @param uploadFileName, the name of the file. * @param fileLength, the length of the file. * @return the file ID in DFS. * @throws IOException */ public String[] uploadFileByStream(InputStream inStream, String uploadFileName, long fileLength) throws IOException { String[] results = null; String fileExtName = ""; if (uploadFileName.contains(".")) { fileExtName = uploadFileName.substring(uploadFileName.lastIndexOf(".") + 1); } else { logger.warn("Fail to upload file, because the format of filename is illegal."); return results; } TrackerClient tracker = new TrackerClient(); TrackerServer trackerServer = tracker.getConnection(); StorageServer storageServer = null; StorageClient1 client = new StorageClient1(trackerServer, storageServer); NameValuePair[] metaList = new NameValuePair[3]; metaList[0] = new NameValuePair("fileName", uploadFileName); metaList[1] = new NameValuePair("fileExtName", fileExtName); metaList[2] = new NameValuePair("fileLength", String.valueOf(fileLength)); try { // results[0]: groupName, results[1]: remoteFilename. results = client.upload_file(null, fileLength, new UploadFileSender(inStream), fileExtName, metaList); } catch (Exception e) { logger.warn("Upload file \"" + uploadFileName + "\"fails"); } trac 4000 kerServer.close(); return results; }
其中的UploadFileSender是一个实现了UploadCallback接口的类:
[java]
view plaincopyprint?
private staticclass UploadFileSender
implements UploadCallback {
private InputStream inStream;
public UploadFileSender(InputStream inStream) {
this.inStream = inStream;
}
public int send(OutputStream out)throws IOException {
int readBytes;
while((readBytes = inStream.read()) >0) {
out.write(readBytes);
}
return 0;
}
}
private static class UploadFileSender implements UploadCallback { private InputStream inStream; public UploadFileSender(InputStream inStream) { this.inStream = inStream; } public int send(OutputStream out) throws IOException { int readBytes; while((readBytes = inStream.read()) > 0) { out.write(readBytes); } return 0; } }
相关文章推荐
- FastDFS的配置、部署与API使用解读(3)以流的方式上传文件的客户端代码
- FastDFS的配置、部署与API使用解读(2)以字节方式上传文件的客户端代码
- FastDFS的配置、部署与API使用解读(3)以流的方式上传文件的客户端代码
- FastDFS的配置、部署与API使用解读(2)以字节方式上传文件的客户端代码
- FastDFS的配置、部署与API使用解读(2)以字节方式上传文件的客户端代码
- FastDFS的配置、部署与API使用解读(2)以字节方式上传文件的客户端代码(转)
- FastDFS的配置、部署与API使用解读(3)以流的方式上传文件的客户端代码(转)
- FastDFS的配置、部署与API使用解读(2)以字节方式上传文件的客户端代码
- FastDFS的配置、部署与API使用解读(3)以流的方式上传文件的客户端代码
- FastDFS的配置、部署与API使用解读(2)以字节方式上传文件的客户端代码
- FastDFS的配置、部署与API使用解读(3)以流的方式上传文件的客户端代码
- FastDFS的配置、部署与API使用解读(2)以字节方式上传文件的客户端代码
- FastDFS的配置、部署与API使用解读(3)以流的方式上传文件的客户端代码
- FastDFS的配置、部署与API使用解读(2)以字节方式上传文件的客户端代码
- FastDFS的配置、部署与API使用解读(2)以字节方式上传文件的客户端代码
- FastDFS的配置、部署与API使用解读(3)以流的方式上传文件的客户端代码
- FastDFS的配置、部署与API使用解读(3)以流的方式上传文件的客户端代码
- 转载:FastDFS的配置、部署与API使用解读(8)FastDFS多种文件上传接口详解
- FastDFS的配置、部署与API使用解读(8)FastDFS多种文件上传接口详解(转)
- FastDFS的配置、部署与API使用解读(8)FastDFS多种文件上传接口详解