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) {
|
||||
var request apirequest.V1DocumentsPOST
|
||||
|
@ -22,19 +26,36 @@ func (h *V1Handler) V1DocumentsPOST(c echo.Context) (err error) {
|
|||
|
||||
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()
|
||||
if err != nil {
|
||||
response.StatusCode = http.StatusBadRequest
|
||||
response.Message = fmt.Sprintf("Téléversement invalide: %s", err)
|
||||
response.StatusCode = http.StatusBadRequest
|
||||
|
||||
return c.JSON(response.StatusCode, response)
|
||||
}
|
||||
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 {
|
||||
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 {
|
||||
|
@ -44,16 +65,22 @@ func (h *V1Handler) V1DocumentsPOST(c echo.Context) (err error) {
|
|||
}
|
||||
|
||||
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() {
|
||||
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
|
||||
|
|
Loading…
Reference in a new issue