diff --git a/src/module_vmap/module/javascript/app/vmap/tools/select/select.js b/src/module_vmap/module/javascript/app/vmap/tools/select/select.js
index 6438fce7e678a9d6e390b184d5a9bd03cc69a6e0..568395bf3cfad59de8c1f56c7ef278b2a33a1f34 100755
--- a/src/module_vmap/module/javascript/app/vmap/tools/select/select.js
+++ b/src/module_vmap/module/javascript/app/vmap/tools/select/select.js
@@ -1664,7 +1664,11 @@ nsVmap.nsToolsManager.Select.prototype.selectController.prototype.getFormDataFro
             oFormData_.append(key, oValues[key]['aFiles'][0]['name']);
         } else if (bIsMultipleFiles) {
             for (var i = 0; i < oValues[key].length; i++) {
-                oFormData_.append(key + '[]', oValues[key][i]);
+                if (goog.isDefAndNotNull(oValues[key][i]['name'])) {
+                    oFormData_.append(key + '[]', oValues[key][i], oValues[key][i]['name']);
+                } else {
+                    oFormData_.append(key + '[]', oValues[key][i]);
+                }
             }
         } else {
             oFormData_.append(key, oValues[key]);
diff --git a/src/module_vmap/web_service/ws/Querys.class.inc b/src/module_vmap/web_service/ws/Querys.class.inc
index 88a588898c2f0f9f81a9534d5943b713e8301313..f58e0702faa98683b64b255c3f4f2beb0e4446e1 100644
--- a/src/module_vmap/web_service/ws/Querys.class.inc
+++ b/src/module_vmap/web_service/ws/Querys.class.inc
@@ -1439,6 +1439,9 @@ class Querys extends Vmap {
 
         $this->aValues['my_vitis_id'] = $this->aValues[$bo_id_field];
 
+        error_log('$_FILES: '. print_r($_FILES, true));
+        error_log('$this->aValues: '. print_r($this->aValues, true));
+
         // Fichiers à uploader ?
         if (!empty($_FILES) && !empty($this->aValues['my_vitis_id'])) {
 
@@ -1447,10 +1450,11 @@ class Querys extends Vmap {
                 $aUploadReturn = $this->oFilesManager->uploadInWsDataDir('vitis', $sBusinessObjectId, $this->aValues['my_vitis_id'], $sName, 'documents');
                 $this->aValues[$sName] = $aUploadReturn['field_value'];
             }
-
-            $aReturn = $this->genericPut($bo_schema, $bo_table, $bo_id_field);
         }
 
+        // Maj en base
+        $aReturn = $this->genericPut($bo_schema, $bo_table, $bo_id_field);
+
         // Lance l'évènement webSocket
         if (!empty($bo_event)) {
             sendWebsocketMessage($this->aProperties['websocket_server'], $this->aProperties['websocket_port'], $this->aProperties['websocket_alias'], array(
diff --git a/src/vitis/client/javascript/app/services/formSrvc.js b/src/vitis/client/javascript/app/services/formSrvc.js
index ea6c95d42a8297b55bc48a2cf018081df3c214a1..8d0eba1b8081f66b2a2a5a010c020d67da6788b1 100755
--- a/src/vitis/client/javascript/app/services/formSrvc.js
+++ b/src/vitis/client/javascript/app/services/formSrvc.js
@@ -51,44 +51,74 @@ vitisApp.formSrvc = function (envSrvc, propertiesSrvc, sessionSrvc, formReaderSe
                             case "upload":
                             case "file_wsdata":
                             case "image_wsdata":
+
+                                var bContainFiles = false;
+                                var oFiles = null;
                                 if (document.getElementById(aFormRowElementsList[ifieldIndex]["id"]) != null) {
-                                    var bContainFiles = true;
-                                    var oFiles = document.getElementById(aFormRowElementsList[ifieldIndex]["id"]).files;
-                                    if (goog.isDefAndNotNull(oFiles)) {
-                                        if (oFiles.length > 0) {
-                                            oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"]] = oFiles[0];
-                                            if (oFiles.length > 1) {
-                                                oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"]] = oFiles;
-                                            }
-                                            if (goog.isDefAndNotNull(aFormRowElementsList[ifieldIndex]["width"]) && goog.isDefAndNotNull(aFormRowElementsList[ifieldIndex]["height"])) {
-                                                oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"] + "_width"] = aFormRowElementsList[ifieldIndex]["width"];
-                                                oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"] + "_height"] = aFormRowElementsList[ifieldIndex]["height"];
+                                    bContainFiles = true;
+                                    oFiles = document.getElementById(aFormRowElementsList[ifieldIndex]["id"]).files;
+                                    console.log('1');
+                                } else {
+                                    console.log('2');
+
+                                    var oElemValue = aFormValues[aFormRowElementsList[ifieldIndex]["name"]];
+
+                                    console.log("aFormValues: ", aFormValues);
+                                    console.log("aFormRowElementsList[ifieldIndex][name]: ", aFormRowElementsList[ifieldIndex]["name"]);
+                                    console.log("oElemValue: ", oElemValue);
+
+                                    if (goog.isArray(oElemValue)) {
+                                        if (goog.isDefAndNotNull(oElemValue[0])) {
+                                            if (goog.isDefAndNotNull(oElemValue[0]['name'])) {
+                                                oFiles = [];
+                                                for (var i = 0; i < oElemValue.length; i++) {
+                                                    if (goog.isDefAndNotNull(oElemValue[i]['name'])) {
+                                                        oFiles.push(oElemValue[i]);
+                                                    }
+                                                }
                                             }
-                                        } else {
-                                            bContainFiles = false;
+                                        }
+                                    }
+                                }
+
+                                console.log("oFiles: ", oFiles);
+
+                                if (goog.isDefAndNotNull(oFiles)) {
+                                    if (oFiles.length > 0) {
+                                        oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"]] = oFiles[0];
+                                        if (oFiles.length > 1) {
+                                            oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"]] = oFiles;
+                                        }
+                                        if (goog.isDefAndNotNull(aFormRowElementsList[ifieldIndex]["width"]) && goog.isDefAndNotNull(aFormRowElementsList[ifieldIndex]["height"])) {
+                                            oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"] + "_width"] = aFormRowElementsList[ifieldIndex]["width"];
+                                            oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"] + "_height"] = aFormRowElementsList[ifieldIndex]["height"];
                                         }
                                     } else {
                                         bContainFiles = false;
                                     }
+                                } else {
+                                    bContainFiles = false;
+                                }
 
-                                    if (!bContainFiles) {
-                                        var oElemValue = aFormValues[aFormRowElementsList[ifieldIndex]["name"]];
-                                        if (goog.isDefAndNotNull(oElemValue)) {
-                                            if (goog.isDefAndNotNull(oElemValue['aFiles'])) {
-                                                if (goog.isDefAndNotNull(oElemValue['aFiles'][0])) {
-                                                    oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"]] = oElemValue['aFiles'][0];
-                                                    if (oElemValue['aFiles'].length > 1) {
-                                                        oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"]] = oElemValue['aFiles'];
-                                                    }
-                                                    if (goog.isDefAndNotNull(aFormRowElementsList[ifieldIndex]["width"]) && goog.isDefAndNotNull(aFormRowElementsList[ifieldIndex]["height"])) {
-                                                        oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"] + "_width"] = aFormRowElementsList[ifieldIndex]["width"];
-                                                        oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"] + "_height"] = aFormRowElementsList[ifieldIndex]["height"];
-                                                    }
+                                if (!bContainFiles) {
+                                    var oElemValue = aFormValues[aFormRowElementsList[ifieldIndex]["name"]];
+                                    if (goog.isDefAndNotNull(oElemValue)) {
+                                        if (goog.isDefAndNotNull(oElemValue['aFiles'])) {
+                                            if (goog.isDefAndNotNull(oElemValue['aFiles'][0])) {
+                                                oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"]] = oElemValue['aFiles'][0];
+                                                if (oElemValue['aFiles'].length > 1) {
+                                                    oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"]] = oElemValue['aFiles'];
+                                                }
+                                                if (goog.isDefAndNotNull(aFormRowElementsList[ifieldIndex]["width"]) && goog.isDefAndNotNull(aFormRowElementsList[ifieldIndex]["height"])) {
+                                                    oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"] + "_width"] = aFormRowElementsList[ifieldIndex]["width"];
+                                                    oFormKeysValues[aFormRowElementsList[ifieldIndex]["name"] + "_height"] = aFormRowElementsList[ifieldIndex]["height"];
                                                 }
                                             }
                                         }
                                     }
                                 }
+
+                                console.log("oFormKeysValues: ", oFormKeysValues);
                                 break;
                                 // Si double liste : valeurs séparé par un champ.
                             case "double_select":
@@ -160,6 +190,9 @@ vitisApp.formSrvc = function (envSrvc, propertiesSrvc, sessionSrvc, formReaderSe
                     }
                 }
             } else {
+
+                console.log("oFormKeysValues: ", oFormKeysValues);
+
                 // Sauve les clés et valeurs dans un objet "FormData".
                 oFormData = new FormData();
                 var aFormKeys = Object.keys(oFormKeysValues);
diff --git a/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.html b/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.html
index 93f54c0a17bb87be07a715b1c2fe79a0e4a26bf1..1c45940a5a4c49fb4620f12d5b48cc98b6e456c8 100644
--- a/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.html
+++ b/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.html
@@ -50,8 +50,8 @@
     <!-- Bouton caché input -->
     <div class="hide"
          ng-if="!field.displayOnly">
-        <input ng-if="!field.multiple" type="file" id="{{:refresh:field.id}}" class="file" name="{{:refresh:field.name}}" class="form-control" ng-required="field.required">
-        <input ng-if="field.multiple" type="file" id="{{:refresh:field.id}}" class="file" name="{{:refresh:field.name}}" class="form-control" ng-required="field.required" multiple>
+        <input ng-if="!field.multiple" type="file" id="{{:refresh:field.id}}_hidden" class="file" name="{{:refresh:field.name}}" class="form-control" ng-required="field.required">
+        <input ng-if="field.multiple" type="file" id="{{:refresh:field.id}}_hidden" class="file" name="{{:refresh:field.name}}" class="form-control" ng-required="field.required" multiple>
     </div>
 
 </div>
diff --git a/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js b/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js
index 36e8e6800c4664e0e8c1333bc81e61cb0ae5bbaf..93053f9f50533bef688cc2d3cf74bbb4c54c9ec4 100644
--- a/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js
+++ b/src/vitis/client/javascript/externs/formReader/component/file_picker/file_picker.js
@@ -84,19 +84,47 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
                             var iCounter = 0;
 
                             for (var i = 0; i < aAvaliableFiles.length; i++) {
+
                                 ajaxRequest({
                                     'method': 'GET',
                                     'url': aAvaliableFiles[i],
                                     'headers': {
                                         'Accept': 'application/x-vm-json'
                                     },
-                                    'scope': this.$scope_,
+                                    'scope': scope,
+                                    'ajaxLoader': true,
                                     'responseType': 'blob',
                                     'success': function(response) {
 
                                         iCounter++;
                                         if (goog.isDefAndNotNull(response['data'])) {
                                             var oBlob = response['data'];
+
+                                            if (goog.isDefAndNotNull(response['headers'])) {
+                                                if (goog.isString(response['headers']['content-disposition'])) {
+
+                                                    var sName;
+                                                    var aContentDisp = response['headers']['content-disposition'].split(';');
+                                                    for (var i = 0; i < aContentDisp.length; i++) {
+                                                        if(aContentDisp[i].indexOf('filename=') !== -1){
+                                                            sName = aContentDisp[i].split('"')[1];
+                                                        }
+                                                    }
+
+                                                    if (sName) {
+                                                        oBlob['name'] = sName;
+                                                        // oBlob['lastModified'] = new Date().getTime();
+                                                        // oBlob['lastModifiedDate'] = new Date();
+                                                        // oBlob['webkitRelativePath'] = '';
+
+                                                        // var oFile = new File([oBlob], sName, {
+                                                        //     'type': scope['field']['type'] === 'image_wsdata' ? 'image' : ''
+                                                        // });
+
+                                                        // scope['aFiles'].push(oFile);
+                                                    }
+                                                }
+                                            }
                                             scope['aFiles'].push(oBlob);
                                         }
                                         if (iCounter === aAvaliableFiles.length) {
@@ -161,7 +189,7 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
 
                         var deferred = $q.defer();
                         setTimeout(function () {
-                            var oInput = $(element).find('#' + scope['field']['id']);
+                            var oInput = $(element).find('#' + scope['field']['id'] + '_hidden');
                             deferred.resolve(oInput);
                         });
 
@@ -178,6 +206,8 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
                             sPreviewContainer = 'aPreviewImages';
                         }
 
+                        console.log("initPreview: ", scope['aFiles']);
+
                         // Vide les images qui ont étés supprimées de aFiles
                         var bIsPresent;
                         for (var i = scope[sPreviewContainer].length - 1; i >= 0; i--) {
@@ -270,13 +300,19 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
                                 if (result) {
                                     for (var i = 0; i < scope['aFiles'].length; i++) {
                                         if(scope['aFiles'][i]['name'] === oFile['name']){
+                                            console.log('1', oFile['name']);
                                             scope['aFiles'].splice(i, 1);
                                         }
                                     }
 
                                     // Affichage des images
                                     setTimeout(function () {
+
+                                        // Initialise l'affichage des images
                                         scope['initPreview']();
+
+                                        // Sauvegarde les fichiers sur oFormValues
+                                        scope['saveFiles']();
                                     });
                                 }
                             }
@@ -287,7 +323,7 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
                      * Show the finder to search no files to add
                      */
                     scope['searchNewFile'] = function() {
-                        var oInput = $(element).find('#' + scope['field']['id']);
+                        var oInput = $(element).find('#' + scope['field']['id'] + '_hidden');
                         $(oInput).click();
                     }
 
@@ -331,6 +367,15 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
                         });
                     }
 
+                    /**
+                     * Sauvegarde les fichiers sur oFormValues
+                     */
+                    scope['saveFiles'] = function() {
+                        console.log("saveFiles: ", scope['aFiles']);
+                        console.log("scope['oFormValues']: ", scope["oFormValues"]);
+                        scope['oFormValues'][scope['sFormDefinitionName']][scope['field'].name] = scope['aFiles'];
+                    }
+
                 },
                 post: function (scope, element, attributes, controller, transcludeFn) {
                     $log.log("formReader.FilePickerDirective.post");
@@ -355,6 +400,9 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
                             // Set la nouvelle valeur de l'attibut
                             setTimeout(function () {
                                 oInput[0]['files_vitis'] = scope['aFiles'];
+
+                                // Sauvegarde les fichiers sur oFormValues
+                                scope['saveFiles']();
                             });
                         });
 
@@ -365,6 +413,9 @@ nsVitisComponent.FilePickerDirective = function ($timeout, $translate, propertie
 
                                 // Initialise l'affichage des images
                                 scope['initPreview']();
+
+                                // Sauvegarde les fichiers sur oFormValues
+                                scope['saveFiles']();
                             });
                         }
                     });