Ver código fonte

fix bug:upload multipart archive object error

taowei.wtw 6 anos atrás
pai
commit
af478e9ab5
2 arquivos alterados com 32 adições e 0 exclusões
  1. 6 0
      oss/upload.go
  2. 26 0
      oss/upload_test.go

+ 6 - 0
oss/upload.go

@@ -191,6 +191,9 @@ func (bucket Bucket) uploadFile(objectKey, filePath string, partSize int64, opti
 	event := newProgressEvent(TransferStartedEvent, 0, totalBytes, 0)
 	publishProgress(listener, event)
 
+	// oss server don't support x-oss-storage-class
+	options = deleteOption(options, HTTPHeaderOssStorageClass)
+
 	// Start the worker coroutine
 	arg := workerArg{&bucket, filePath, imur, options, uploadPartHooker}
 	for w := 1; w <= routines; w++ {
@@ -479,6 +482,9 @@ func (bucket Bucket) uploadFileWithCp(objectKey, filePath string, partSize int64
 	event := newProgressEvent(TransferStartedEvent, completedBytes, ucp.FileStat.Size, 0)
 	publishProgress(listener, event)
 
+	// oss server don't support x-oss-storage-class
+	options = deleteOption(options, HTTPHeaderOssStorageClass)
+
 	// Start the workers
 	arg := workerArg{&bucket, filePath, imur, options, uploadPartHooker}
 	for w := 1; w <= routines; w++ {

+ 26 - 0
oss/upload_test.go

@@ -459,6 +459,32 @@ func (s *OssUploadSuite) TestUploadLocalFileChange(c *C) {
 	c.Assert(err, IsNil)
 }
 
+// TestUploadPartArchiveObject 
+func (s *OssUploadSuite) TestUploadPartArchiveObject(c *C) {
+	// create archive bucket
+	client, err := New(endpoint, accessID, accessKey)
+	c.Assert(err, IsNil)
+
+	bucketName := bucketNamePrefix + randLowStr(6)
+	err = client.CreateBucket(bucketName, StorageClass(StorageArchive))
+	c.Assert(err, IsNil)
+	bucket, err := client.Bucket(bucketName)
+	objectName := objectNamePrefix + randStr(8)
+
+	fileName := "../sample/BingWallpaper-2015-11-07.jpg"
+	fileInfo, err := os.Stat(fileName)
+	c.Assert(err, IsNil)
+
+	// Updating the file,archive object
+	err = bucket.UploadFile(objectName, fileName, fileInfo.Size()/2, ObjectStorageClass(StorageArchive))
+	c.Assert(err, IsNil)
+
+	// Updating the file,archive object,checkpoint
+	err = bucket.UploadFile(objectName, fileName, fileInfo.Size()/2, ObjectStorageClass(StorageArchive), Checkpoint(true, fileName+".cp"))
+	c.Assert(err, IsNil)
+	forceDeleteBucket(client, bucketName, c)
+}
+
 func copyFile(src, dst string) error {
 	srcFile, err := os.Open(src)
 	if err != nil {