aboutsummaryrefslogtreecommitdiff
path: root/go/storage
diff options
context:
space:
mode:
authortnextday <fw2k4@163.com>2015-12-01 20:23:50 +0800
committertnextday <fw2k4@163.com>2015-12-01 20:23:50 +0800
commit6b0894d80635047479548bb19029300a596b4d55 (patch)
treeaef605f25524928a3c5aa0092f4aa5cf6e39f7b1 /go/storage
parentf825d237890c7df70c3d752668ddbc2deab3890e (diff)
downloadseaweedfs-6b0894d80635047479548bb19029300a596b4d55.tar.xz
seaweedfs-6b0894d80635047479548bb19029300a596b4d55.zip
update ChunkedFile to seekable reader, so we can use io.* to read data
Diffstat (limited to 'go/storage')
-rw-r--r--go/storage/needle.go11
-rw-r--r--go/storage/needle_read_write.go10
2 files changed, 13 insertions, 8 deletions
diff --git a/go/storage/needle.go b/go/storage/needle.go
index 04a9dc78d..c09ad061a 100644
--- a/go/storage/needle.go
+++ b/go/storage/needle.go
@@ -52,7 +52,7 @@ func (n *Needle) String() (str string) {
return
}
-func ParseUpload(r *http.Request) (fileName string, data []byte, mimeType string, isGzipped bool, modifiedTime uint64, ttl *TTL, e error) {
+func ParseUpload(r *http.Request) (fileName string, data []byte, mimeType string, isGzipped bool, modifiedTime uint64, ttl *TTL, isChunkedFile bool, e error) {
form, fe := r.MultipartReader()
if fe != nil {
glog.V(0).Infoln("MultipartReader [ERROR]", fe)
@@ -132,12 +132,13 @@ func ParseUpload(r *http.Request) (fileName string, data []byte, mimeType string
}
modifiedTime, _ = strconv.ParseUint(r.FormValue("ts"), 10, 64)
ttl, _ = ReadTTL(r.FormValue("ttl"))
+ isChunkedFile, _ = strconv.ParseBool(r.FormValue("cf"))
return
}
func NewNeedle(r *http.Request, fixJpgOrientation bool) (n *Needle, e error) {
- fname, mimeType, isGzipped := "", "", false
+ fname, mimeType, isGzipped, isChunkedFile := "", "", false, false
n = new(Needle)
- fname, n.Data, mimeType, isGzipped, n.LastModified, n.Ttl, e = ParseUpload(r)
+ fname, n.Data, mimeType, isGzipped, n.LastModified, n.Ttl, isChunkedFile, e = ParseUpload(r)
if e != nil {
return
}
@@ -160,6 +161,10 @@ func NewNeedle(r *http.Request, fixJpgOrientation bool) (n *Needle, e error) {
n.SetHasTtl()
}
+ if isChunkedFile {
+ n.SetChunkedFile()
+ }
+
if fixJpgOrientation {
loweredName := strings.ToLower(fname)
if mimeType == "image/jpeg" || strings.HasSuffix(loweredName, ".jpg") || strings.HasSuffix(loweredName, ".jpeg") {
diff --git a/go/storage/needle_read_write.go b/go/storage/needle_read_write.go
index 2a5bd89ea..28b0e8fde 100644
--- a/go/storage/needle_read_write.go
+++ b/go/storage/needle_read_write.go
@@ -16,7 +16,7 @@ const (
FlagHasMime = 0x04
FlagHasLastModifiedDate = 0x08
FlagHasTtl = 0x10
- FlagChunkList = 0x80
+ FlagChunkedFile = 0x80
LastModifiedBytesLength = 5
TtlBytesLength = 2
)
@@ -282,10 +282,10 @@ func (n *Needle) SetHasTtl() {
n.Flags = n.Flags | FlagHasTtl
}
-func (n *Needle) IsChunkList() bool {
- return n.Flags&FlagChunkList > 0
+func (n *Needle) IsChunkedFile() bool {
+ return n.Flags&FlagChunkedFile > 0
}
-func (n *Needle) SetChunkList() {
- n.Flags = n.Flags | FlagChunkList
+func (n *Needle) SetChunkedFile() {
+ n.Flags = n.Flags | FlagChunkedFile
}