Permettre de téléverser plusieurs fichiers à la fois dans admin-upload
#182
1 changed files with 36 additions and 9 deletions
|
@ -12,9 +12,13 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
V1DocumentPOST permet d'ajouter un object dans un bucket, par multipart/form-data
|
V1DocumentsPOST permet d'ajouter un object dans un bucket, par multipart/form-data
|
||||||
|
|
||||||
WIP
|
Example:
|
||||||
|
|
||||||
|
Téléverser plusieurs fichiers à cette route avec `curl`:
|
||||||
|
|
||||||
|
curl <endpoint> -F 'documents=@example.pdf' -F 'documents=@example.md;type=text/markdown'
|
||||||
*/
|
*/
|
||||||
func (h *V1Handler) V1DocumentsPOST(c echo.Context) (err error) {
|
func (h *V1Handler) V1DocumentsPOST(c echo.Context) (err error) {
|
||||||
var request apirequest.V1DocumentsPOST
|
var request apirequest.V1DocumentsPOST
|
||||||
|
@ -22,19 +26,36 @@ func (h *V1Handler) V1DocumentsPOST(c echo.Context) (err error) {
|
||||||
|
|
||||||
request.Params.Bucket = c.Param("bucket")
|
request.Params.Bucket = c.Param("bucket")
|
||||||
|
|
||||||
|
var allowed bool
|
||||||
|
for allowedBucket := range h.Config.Server.Documents.Buckets {
|
||||||
|
if request.Params.Bucket == allowedBucket {
|
||||||
|
allowed = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !allowed {
|
||||||
|
return c.JSON(apiresponse.NotFoundResponse())
|
||||||
|
}
|
||||||
|
|
||||||
form, err := c.MultipartForm()
|
form, err := c.MultipartForm()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
response.StatusCode = http.StatusBadRequest
|
|
||||||
response.Message = fmt.Sprintf("Téléversement invalide: %s", err)
|
response.Message = fmt.Sprintf("Téléversement invalide: %s", err)
|
||||||
|
response.StatusCode = http.StatusBadRequest
|
||||||
|
|
||||||
return c.JSON(response.StatusCode, response)
|
return c.JSON(response.StatusCode, response)
|
||||||
}
|
}
|
||||||
if form == nil {
|
if form == nil {
|
||||||
return c.JSON(http.StatusBadRequest, "MultipartForm pointer vers une addresse mémoire nil")
|
response.Message = "MultipartForm pointe vers une addresse mémoire nil"
|
||||||
|
response.StatusCode = http.StatusBadRequest
|
||||||
|
|
||||||
|
return c.JSON(response.StatusCode, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(form.File) == 0 {
|
if len(form.File) == 0 {
|
||||||
return c.JSON(http.StatusBadRequest, "Veuillez sélectionner au moins 1 document à téléverser")
|
response.Message = "Veuillez sélectionner au moins 1 document à téléverser"
|
||||||
|
response.StatusCode = http.StatusBadRequest
|
||||||
|
|
||||||
|
return c.JSON(response.StatusCode, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
for inputName, inputFileHeaders := range form.File {
|
for inputName, inputFileHeaders := range form.File {
|
||||||
|
@ -44,16 +65,22 @@ func (h *V1Handler) V1DocumentsPOST(c echo.Context) (err error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if request.Data.Documents == nil {
|
if request.Data.Documents == nil {
|
||||||
return c.JSON(http.StatusBadRequest, "Impossible d'obtenir les documents depuis le formulaire")
|
response.Message = "Impossible d'obtenir les documents depuis le formulaire"
|
||||||
|
response.StatusCode = http.StatusBadRequest
|
||||||
|
|
||||||
|
return c.JSON(response.StatusCode, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !request.Complete() {
|
if !request.Complete() {
|
||||||
return c.JSON(http.StatusBadRequest, "Requête V1DocumentsPOST incomplète reçue")
|
response.Message = "Requête V1DocumentsPOST incomplète reçue"
|
||||||
|
response.StatusCode = http.StatusBadRequest
|
||||||
|
|
||||||
|
return c.JSON(response.StatusCode, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
response.StatusCode, response.Message = h.MediaClient.UploadFormFiles(request.Data.Documents)
|
response.StatusCode, response.Message = h.MediaClient.UploadFormFiles(request.Params.Bucket, request.Data.Documents)
|
||||||
|
|
||||||
return c.JSON(response.StatusCode, response.Message)
|
return c.JSON(response.StatusCode, response)
|
||||||
}
|
}
|
||||||
|
|
||||||
// V1DocumentPOST permet d'ajouter un object dans un bucket, par multipart/form-data
|
// V1DocumentPOST permet d'ajouter un object dans un bucket, par multipart/form-data
|
||||||
|
|
Loading…
Reference in a new issue