增加批量上传
This commit is contained in:
parent
1b7bc6c917
commit
10a3df3a5a
@ -63,6 +63,10 @@ func (h *Handler) UploadImage(c *gin.Context) {
|
|||||||
h.uploadObject(c, imageUploadPolicy)
|
h.uploadObject(c, imageUploadPolicy)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (h *Handler) UploadFilesBatch(c *gin.Context) {
|
||||||
|
h.uploadObjects(c, fileUploadPolicy)
|
||||||
|
}
|
||||||
|
|
||||||
func (h *Handler) UploadImagesBatch(c *gin.Context) {
|
func (h *Handler) UploadImagesBatch(c *gin.Context) {
|
||||||
h.uploadObjects(c, imageUploadPolicy)
|
h.uploadObjects(c, imageUploadPolicy)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -187,6 +187,28 @@ func TestUploadImagesBatchUploadsSeriallyAndLimitsCount(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUploadFilesBatchAllowsAnyMaterialExtension(t *testing.T) {
|
||||||
|
uploader := &fakeUploader{}
|
||||||
|
handler := New(uploader, "admin", fakeAudit{})
|
||||||
|
router := ginRouter(handler)
|
||||||
|
body, contentType := multipartBatchUploadBody(t, []string{"gift.mp4", "gift.json"})
|
||||||
|
req := httptest.NewRequest(http.MethodPost, "/upload-files-batch", body)
|
||||||
|
req.Header.Set("Content-Type", contentType)
|
||||||
|
rec := httptest.NewRecorder()
|
||||||
|
|
||||||
|
router.ServeHTTP(rec, req)
|
||||||
|
|
||||||
|
if rec.Code != http.StatusOK {
|
||||||
|
t.Fatalf("status = %d body=%s", rec.Code, rec.Body.String())
|
||||||
|
}
|
||||||
|
if len(uploader.keys) != 2 {
|
||||||
|
t.Fatalf("expected 2 uploads, got %d", len(uploader.keys))
|
||||||
|
}
|
||||||
|
if !strings.HasPrefix(uploader.keys[0], "admin/files/7/") || !strings.HasSuffix(uploader.keys[0], ".mp4") {
|
||||||
|
t.Fatalf("unexpected first key: %s", uploader.keys[0])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func ginRouter(handler *Handler) http.Handler {
|
func ginRouter(handler *Handler) http.Handler {
|
||||||
router := gin.New()
|
router := gin.New()
|
||||||
router.Use(func(c *gin.Context) {
|
router.Use(func(c *gin.Context) {
|
||||||
@ -195,6 +217,7 @@ func ginRouter(handler *Handler) http.Handler {
|
|||||||
c.Next()
|
c.Next()
|
||||||
})
|
})
|
||||||
router.POST("/upload-image", handler.UploadImage)
|
router.POST("/upload-image", handler.UploadImage)
|
||||||
|
router.POST("/upload-files-batch", handler.UploadFilesBatch)
|
||||||
router.POST("/upload-images-batch", handler.UploadImagesBatch)
|
router.POST("/upload-images-batch", handler.UploadImagesBatch)
|
||||||
return router
|
return router
|
||||||
}
|
}
|
||||||
@ -229,6 +252,12 @@ func multipartBatchUploadBody(t *testing.T, filenames []string) (*bytes.Buffer,
|
|||||||
if strings.HasSuffix(filename, ".pag") {
|
if strings.HasSuffix(filename, ".pag") {
|
||||||
contentType = "application/octet-stream"
|
contentType = "application/octet-stream"
|
||||||
payload = []byte("PAG animated asset")
|
payload = []byte("PAG animated asset")
|
||||||
|
} else if strings.HasSuffix(filename, ".mp4") {
|
||||||
|
contentType = "video/mp4"
|
||||||
|
payload = []byte("mp4 animated asset")
|
||||||
|
} else if strings.HasSuffix(filename, ".json") {
|
||||||
|
contentType = "application/json"
|
||||||
|
payload = []byte(`{"asset":true}`)
|
||||||
}
|
}
|
||||||
part, err := writer.CreatePart(map[string][]string{
|
part, err := writer.CreatePart(map[string][]string{
|
||||||
"Content-Disposition": {`form-data; name="files"; filename="` + filename + `"`},
|
"Content-Disposition": {`form-data; name="files"; filename="` + filename + `"`},
|
||||||
|
|||||||
@ -13,5 +13,6 @@ func RegisterRoutes(protected *gin.RouterGroup, h *Handler) {
|
|||||||
|
|
||||||
protected.POST("/admin/files/upload", middleware.RequirePermission("upload:create"), h.UploadFile)
|
protected.POST("/admin/files/upload", middleware.RequirePermission("upload:create"), h.UploadFile)
|
||||||
protected.POST("/admin/files/image/upload", middleware.RequirePermission("upload:create"), h.UploadImage)
|
protected.POST("/admin/files/image/upload", middleware.RequirePermission("upload:create"), h.UploadImage)
|
||||||
|
protected.POST("/admin/files/batch-upload", middleware.RequirePermission("upload:create"), h.UploadFilesBatch)
|
||||||
protected.POST("/admin/files/image/batch-upload", middleware.RequirePermission("upload:create"), h.UploadImagesBatch)
|
protected.POST("/admin/files/image/batch-upload", middleware.RequirePermission("upload:create"), h.UploadImagesBatch)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user