mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
add ETag to upload results and chunks
This commit is contained in:
parent
420f068376
commit
7d6b2a4740
|
@ -201,6 +201,7 @@ func uploadFileAsOne(filerAddress, filerGrpcAddress string, urlFolder string, f
|
||||||
Offset: 0,
|
Offset: 0,
|
||||||
Size: uint64(uploadResult.Size),
|
Size: uint64(uploadResult.Size),
|
||||||
Mtime: time.Now().UnixNano(),
|
Mtime: time.Now().UnixNano(),
|
||||||
|
ETag: uploadResult.ETag,
|
||||||
})
|
})
|
||||||
|
|
||||||
fmt.Printf("copied %s => http://%s%s%s\n", fileName, filerAddress, urlFolder, fileName)
|
fmt.Printf("copied %s => http://%s%s%s\n", fileName, filerAddress, urlFolder, fileName)
|
||||||
|
@ -278,6 +279,7 @@ func uploadFileInChunks(filerAddress, filerGrpcAddress string, urlFolder string,
|
||||||
Offset: i * chunkSize,
|
Offset: i * chunkSize,
|
||||||
Size: uint64(uploadResult.Size),
|
Size: uint64(uploadResult.Size),
|
||||||
Mtime: time.Now().UnixNano(),
|
Mtime: time.Now().UnixNano(),
|
||||||
|
ETag: uploadResult.ETag,
|
||||||
})
|
})
|
||||||
fmt.Printf("uploaded %s-%d to %s [%d,%d)\n", fileName, i+1, targetUrl, i*chunkSize, i*chunkSize+int64(uploadResult.Size))
|
fmt.Printf("uploaded %s-%d to %s [%d,%d)\n", fileName, i+1, targetUrl, i*chunkSize, i*chunkSize+int64(uploadResult.Size))
|
||||||
}
|
}
|
||||||
|
|
|
@ -187,6 +187,7 @@ func (pages *ContinuousDirtyPages) saveToStorage(ctx context.Context, buf []byte
|
||||||
Offset: offset,
|
Offset: offset,
|
||||||
Size: uint64(len(buf)),
|
Size: uint64(len(buf)),
|
||||||
Mtime: time.Now().UnixNano(),
|
Mtime: time.Now().UnixNano(),
|
||||||
|
ETag: uploadResult.ETag,
|
||||||
}, nil
|
}, nil
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@ type UploadResult struct {
|
||||||
Name string `json:"name,omitempty"`
|
Name string `json:"name,omitempty"`
|
||||||
Size uint32 `json:"size,omitempty"`
|
Size uint32 `json:"size,omitempty"`
|
||||||
Error string `json:"error,omitempty"`
|
Error string `json:"error,omitempty"`
|
||||||
|
ETag string `json:"error,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
@ -90,6 +91,7 @@ func upload_content(uploadUrl string, fillBufferFunction func(w io.Writer) error
|
||||||
return nil, post_err
|
return nil, post_err
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
etag := getEtag(resp)
|
||||||
resp_body, ra_err := ioutil.ReadAll(resp.Body)
|
resp_body, ra_err := ioutil.ReadAll(resp.Body)
|
||||||
if ra_err != nil {
|
if ra_err != nil {
|
||||||
return nil, ra_err
|
return nil, ra_err
|
||||||
|
@ -103,5 +105,14 @@ func upload_content(uploadUrl string, fillBufferFunction func(w io.Writer) error
|
||||||
if ret.Error != "" {
|
if ret.Error != "" {
|
||||||
return nil, errors.New(ret.Error)
|
return nil, errors.New(ret.Error)
|
||||||
}
|
}
|
||||||
|
ret.ETag = etag
|
||||||
return &ret, nil
|
return &ret, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getEtag(r *http.Response) (etag string) {
|
||||||
|
etag = r.Header.Get("ETag")
|
||||||
|
if strings.HasPrefix(etag, "\"") && strings.HasSuffix(etag, "\"") {
|
||||||
|
etag = etag[1 : len(etag)-1]
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
|
@ -123,6 +123,7 @@ func submitForClientHandler(w http.ResponseWriter, r *http.Request, masterUrl st
|
||||||
m["fid"] = assignResult.Fid
|
m["fid"] = assignResult.Fid
|
||||||
m["fileUrl"] = assignResult.PublicUrl + "/" + assignResult.Fid
|
m["fileUrl"] = assignResult.PublicUrl + "/" + assignResult.Fid
|
||||||
m["size"] = uploadResult.Size
|
m["size"] = uploadResult.Size
|
||||||
|
m["eTag"] = uploadResult.ETag
|
||||||
writeJsonQuiet(w, r, http.StatusCreated, m)
|
writeJsonQuiet(w, r, http.StatusCreated, m)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue