Skip to content

Commit deca8d9

Browse files
committed
support to upload directory
1 parent aa50a82 commit deca8d9

File tree

1 file changed

+21
-5
lines changed
  • src/main/java/com/qcloud/cos_migrate_tool/task

1 file changed

+21
-5
lines changed

src/main/java/com/qcloud/cos_migrate_tool/task/Task.java

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.qcloud.cos_migrate_tool.task;
22

3+
import java.io.ByteArrayInputStream;
34
import java.io.BufferedOutputStream;
45
import java.io.File;
56
import java.io.FileNotFoundException;
@@ -204,24 +205,39 @@ private String uploadBigFile(PutObjectRequest putObjectRequest) throws Interrupt
204205

205206
private String uploadSmallFile(PutObjectRequest putObjectRequest) throws InterruptedException {
206207
Upload upload = smallFileTransfer.upload(putObjectRequest);
207-
return showTransferProgressAndGetRequestId(upload, false, putObjectRequest.getKey(),
208-
putObjectRequest.getFile().lastModified());
208+
File file = putObjectRequest.getFile();
209+
long mtime = 0;
210+
if(file != null){
211+
mtime = file.lastModified();
212+
}
213+
return showTransferProgressAndGetRequestId(upload, false, putObjectRequest.getKey(), mtime);
209214
}
210215

211216

212217
public String uploadFile(String bucketName, String cosPath, File localFile,
213218
StorageClass storageClass, boolean entireMd5Attached, ObjectMetadata objectMetadata,
214219
AccessControlList acl) throws Exception {
215-
PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, cosPath, localFile);
220+
PutObjectRequest putObjectRequest;
221+
if(localFile.isDirectory()) {
222+
if(!cosPath.endsWith("/")) {
223+
cosPath += "/";
224+
}
225+
byte[] contentByteArray = new byte[0];
226+
objectMetadata.setContentType("application/x-directory");
227+
objectMetadata.setContentLength(0);
228+
putObjectRequest = new PutObjectRequest(bucketName, cosPath, new ByteArrayInputStream(contentByteArray),
229+
objectMetadata);
230+
} else {
231+
putObjectRequest = new PutObjectRequest(bucketName, cosPath, localFile);
232+
}
216233
putObjectRequest.setStorageClass(storageClass);
217234

218235
if (acl != null) {
219236
putObjectRequest.setAccessControlList(acl);
220237
}
221238

222-
if (entireMd5Attached) {
239+
if (entireMd5Attached && !localFile.isDirectory()) {
223240
String md5 = Md5Utils.md5Hex(localFile);
224-
225241
String upyunTag = objectMetadata.getUserMetaDataOf("upyun-etag");
226242
if (upyunTag != null) {
227243
if (!md5.equalsIgnoreCase(upyunTag)) {

0 commit comments

Comments
 (0)