mirror of
https://github.com/minio/minio.git
synced 2025-11-07 21:02:58 -05:00
Creating subdirectories in fs now works
This commit is contained in:
@@ -176,6 +176,13 @@ func (storage *storage) StoreObject(bucket string, key string, data io.Reader) e
|
||||
|
||||
// get object path
|
||||
objectPath := path.Join(storage.root, bucket, key)
|
||||
objectDir := path.Dir(objectPath)
|
||||
if _, err := os.Stat(objectDir); os.IsNotExist(err) {
|
||||
err = os.MkdirAll(objectDir, 0700)
|
||||
if err != nil {
|
||||
return mstorage.EmbedError(bucket, key, err)
|
||||
}
|
||||
}
|
||||
|
||||
// check if object exists
|
||||
if _, err := os.Stat(objectPath); !os.IsNotExist(err) {
|
||||
|
||||
@@ -15,6 +15,7 @@ func APITestSuite(c *C, create func() Storage) {
|
||||
testObjectOverwriteFails(c, create)
|
||||
testNonExistantBucketOperations(c, create)
|
||||
testBucketRecreateFails(c, create)
|
||||
testPutObjectInSubdir(c, create)
|
||||
}
|
||||
|
||||
func testCreateBucket(c *C, create func() Storage) {
|
||||
@@ -142,3 +143,16 @@ func testBucketRecreateFails(c *C, create func() Storage) {
|
||||
err = storage.StoreBucket("string")
|
||||
c.Assert(err, Not(IsNil))
|
||||
}
|
||||
|
||||
func testPutObjectInSubdir(c *C, create func() Storage) {
|
||||
storage := create()
|
||||
err := storage.StoreBucket("bucket")
|
||||
c.Assert(err, IsNil)
|
||||
err = storage.StoreObject("bucket", "dir1/dir2/object", bytes.NewBufferString("hello world"))
|
||||
c.Assert(err, IsNil)
|
||||
var bytesBuffer bytes.Buffer
|
||||
length, err := storage.CopyObjectToWriter(&bytesBuffer, "bucket", "dir1/dir2/object")
|
||||
c.Assert(len(bytesBuffer.Bytes()), Equals, len("hello world"))
|
||||
c.Assert(int64(len(bytesBuffer.Bytes())), Equals, length)
|
||||
c.Assert(err, IsNil)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user