@@ -523,14 +523,47 @@ class Files @Inject()(
523523 /**
524524 * Upload a file to a specific dataset
525525 */
526- def uploadToDataset (dataset_id : UUID , showPreviews : String = " DatasetLevel" , originalZipFile : String = " " , flagsFromPrevious : String = " " , extract : Boolean = true ) = PermissionAction (Permission .AddResourceToDataset , Some (ResourceRef (ResourceRef .dataset, dataset_id)))(parse.multipartFormData) { implicit request =>
526+ def uploadToDataset (dataset_id : UUID , showPreviews : String = " DatasetLevel" , originalZipFile : String = " " , flagsFromPrevious : String = " " , extract : Boolean = true , folder_id : Option [ String ] = None ) = PermissionAction (Permission .AddResourceToDataset , Some (ResourceRef (ResourceRef .dataset, dataset_id)))(parse.multipartFormData) { implicit request =>
527527 datasets.get(dataset_id) match {
528528 case Some (dataset) => {
529- val uploadedFiles = FileUtils .uploadFilesMultipart(request, Some (dataset), showPreviews = showPreviews, originalZipFile = originalZipFile, flagsFromPrevious = flagsFromPrevious, runExtractors = extract, apiKey = request.apiKey)
530- uploadedFiles.length match {
531- case 0 => BadRequest (" No files uploaded" )
532- case 1 => Ok (Json .obj(" id" -> uploadedFiles.head.id))
533- case _ => Ok (Json .obj(" ids" -> uploadedFiles.toList))
529+ folder_id match {
530+ case Some (id) => {
531+ if (UUID .isValid(id)){
532+ folders.get(UUID (id)) match {
533+ case Some (folder) => {
534+ val uploadedFiles = FileUtils .uploadFilesMultipart(request, Some (dataset), Some (folder), showPreviews = showPreviews, originalZipFile = originalZipFile, flagsFromPrevious = flagsFromPrevious, runExtractors = extract, apiKey = request.apiKey)
535+ uploadedFiles.length match {
536+ case 0 => BadRequest (" No files uploaded" )
537+ case 1 => Ok (Json .obj(" id" -> uploadedFiles.head.id))
538+ case _ => Ok (Json .obj(" ids" -> uploadedFiles.toList))
539+ }
540+ }
541+ case None => {
542+ val uploadedFiles = FileUtils .uploadFilesMultipart(request, Some (dataset), showPreviews = showPreviews, originalZipFile = originalZipFile, flagsFromPrevious = flagsFromPrevious, runExtractors = extract, apiKey = request.apiKey)
543+ uploadedFiles.length match {
544+ case 0 => BadRequest (" No files uploaded" )
545+ case 1 => Ok (Json .obj(" id" -> uploadedFiles.head.id))
546+ case _ => Ok (Json .obj(" ids" -> uploadedFiles.toList))
547+ }
548+ }
549+ }
550+ } else {
551+ val uploadedFiles = FileUtils .uploadFilesMultipart(request, Some (dataset), showPreviews = showPreviews, originalZipFile = originalZipFile, flagsFromPrevious = flagsFromPrevious, runExtractors = extract, apiKey = request.apiKey)
552+ uploadedFiles.length match {
553+ case 0 => BadRequest (" No files uploaded" )
554+ case 1 => Ok (Json .obj(" id" -> uploadedFiles.head.id))
555+ case _ => Ok (Json .obj(" ids" -> uploadedFiles.toList))
556+ }
557+ }
558+ }
559+ case None => {
560+ val uploadedFiles = FileUtils .uploadFilesMultipart(request, Some (dataset), showPreviews = showPreviews, originalZipFile = originalZipFile, flagsFromPrevious = flagsFromPrevious, runExtractors = extract, apiKey = request.apiKey)
561+ uploadedFiles.length match {
562+ case 0 => BadRequest (" No files uploaded" )
563+ case 1 => Ok (Json .obj(" id" -> uploadedFiles.head.id))
564+ case _ => Ok (Json .obj(" ids" -> uploadedFiles.toList))
565+ }
566+ }
534567 }
535568 }
536569 case None => {
0 commit comments