diff --git a/vas/rest/class/vmlib/phpUtil.inc b/vas/rest/class/vmlib/phpUtil.inc
index 9367e1871e08306f696131cc303df522e4736803..5b57b12567515992abb5838229dd45b8b8ace67a 100755
--- a/vas/rest/class/vmlib/phpUtil.inc
+++ b/vas/rest/class/vmlib/phpUtil.inc
@@ -1386,169 +1386,56 @@ function getDatePattern($sUserDateFormat, $sDateType) {
     return $Pattern;
 }
 
-/**
- *This method allow to upload a file on a server.
- *@file vmlib/phpUtil.inc
- *@param $sNomObjet Name of the object.
- *@param $sFileType Type of file needed.
- *@param $sServerPath New path of the file.
- *@param $sMaxSize Maximal size of the file.
- *@return $sErrorMsg The error message.
- */
-function uploadFileToLocal($sNomObjet, $sFileType, $sServerPath, $sMaxSize) {
-    global $properties, $sFolderLib;
-    loadLang($sFolderLib, $properties["language"], $sFolderLib . "/");
-    $aExtensionPicture = array('gif', 'jpg', 'jpeg', 'png');
-    $aExtensionPictureAndPdf = array('gif', 'jpg', 'jpeg', 'png', 'pdf');
-    $aExtensionFile = array('pdf', 'gif', 'jpg', 'jpeg', 'png', 'txt');
-    $aExtensionZip = array('zip', 'gex');
-    $aExtensionFmw = array('fmw');
-    $aForbiddenExtension = explode('|', str_replace("*.", "", $properties['forbidden_extension']));
-    $sTmpFile = $_FILES[$sNomObjet]['tmp_name'];
-    // Si l'utilisateur n'a indiqué aucun fichier à uploader, il ne se passe rien
-    $sErrorMsg = "";
-
-    if ($sTmpFile == '') {
-        if ($_FILES[$sNomObjet]['name'] != "") {
-            switch ($_FILES[$sNomObjet]['error']) {
-                case "1" :
-                    $sErrorMsg = ERROR_DOWNLOAD_FILE . $_FILES[$sNomObjet]['name'] . " : " . ERROR_UPLOAD_MAX_FILE_SIZE;
-                    break;
-                case "2" :
-                    $sErrorMsg = ERROR_DOWNLOAD_FILE . $_FILES[$sNomObjet]['name'] . " : " . ERROR_MAX_FILE_SIZE;
-                    break;
-                case "3" :
-                    $sErrorMsg = ERROR_DOWNLOAD_FILE . $_FILES[$sNomObjet]['name'] . " : " . ERROR_PARTIAL_DOWNLOAD;
-                    break;
-                case "4" :
-                    $sErrorMsg = ERROR_NO_FILE_DOWNLOADED;
-                    break;
-                case "6" :
-                    $sErrorMsg = ERROR_DOWNLOAD_FILE . $_FILES[$sNomObjet]['name'] . " : " . ERROR_MISSING_TEMP_FOLDER;
-                    break;
-                case "7" :
-                    $sErrorMsg = ERROR_DOWNLOAD_FILE . $_FILES[$sNomObjet]['name'] . " : " . ERROR_WRITING_DISK;
-                    break;
-                case "8" :
-                    $sErrorMsg = ERROR_DOWNLOAD_FILE . $_FILES[$sNomObjet]['name'] . " : " . ERROR_PHP_EXT_SEND;
-                    break;
-            }
-            writeToErrorLog($sErrorMsg);
+ /**
+  *This method copy a file in ws_data.
+  *@file vmlib/phpUtil.inc
+  *@param $sModule Name of the module.
+  *@param $sObject Name of the object.
+  *@param $mId Id of the current object.
+  *@param $sField field name (generally DB column name).
+  *@param $sFileName Name of the file to copy.
+  *@param $sNewFileName Name of the new file.
+  *@return $sErrorMsg The error message.
+  */
+function copyFileInWsDataDir($sModule, $sObject, $mId, $sField = '', $sFileName, $sNewFileName) {
+    global $properties;
+    $sErrorMsg = '';
+    $sDestDir = $properties['ws_data_dir'] . "/" . $sModule . "/" . $sObject . "/" . $mId;
+    if(!empty($sField))
+        $sDestDir .= "/" . $sField;
+    if ($properties['fileS3Uploader']) {
+        require_once ("aws_sdk/aws-autoloader.php");
+        $s3 = new Aws\S3\S3Client(array(
+            'version'=>'latest',
+            'region'=> $properties['fileS3UploaderRegion'],
+            'profile'=> $properties['fileS3UploaderProfil'],
+            'debug' => false
+        ));
+        $sBucket = $properties['fileS3UploaderBucket'];
+        $sPrefix = "";
+        if (strpos($sBucket, "/") > -1){
+            $aBucket = explode("/", $sBucket );
+            $sBucket = $aBucket[0];
+            $sPrefix = implode("/", array_slice($aBucket, 1));
         }
-        return $sErrorMsg;
+        $sServerPath = str_replace($properties["vas_home"], $sPrefix, $sDestDir);
+        // Suppression du slash de début de ligne (sinon création d'un répertoire vide sur S3).
+        if (strpos($sServerPath, '/') === 0)
+            $sServerPath = substr($sServerPath, 1);
+        // Copie du fichier.
+        $aResult = $s3->copyObject(array(
+            'Bucket' => $sBucket,
+            'Key' => $sServerPath . '/' . $sNewFileName,
+            'CopySource' => $sBucket . '/' . $sServerPath . '/' . urlencode($sFileName)
+        ));
     }
-    $aTemp = explode("\\", $sServerPath);
-    if (is_uploaded_file($sTmpFile)) {
-        if (!in_array(extension($aTemp[count($aTemp) - 1]), $aForbiddenExtension)) {
-            //Teste si le fichier correspont au format voulu.
-            $bAllowUpload = false;
-            $sFormat = "";
-            switch ($sFileType) {
-                case "image" :
-                    if (in_array(extension($aTemp[count($aTemp) - 1]), $aExtensionPicture)) {
-                        $bAllowUpload = true;
-                    } else {
-                        foreach ($aExtensionPicture as $sValue) {
-                            $sFormat .= " " . $sValue;
-                        }
-                        writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType);
-                        $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType . ERROR_VALID_FILE . $sFormat . '.';
-                    }
-                    break;
-                case "image-pdf" :
-                    if (in_array(extension($aTemp[count($aTemp) - 1]), $aExtensionPictureAndPdf)) {
-                        $bAllowUpload = true;
-                    } else {
-                        foreach ($aExtensionPictureAndPdf as $sValue) {
-                            $sFormat .= " " . $sValue;
-                        }
-                        writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType);
-                        $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType . ERROR_VALID_FILE . $sFormat . '.';
-                    }
-                    break;
-                case "document" :
-                    if (in_array(extension($aTemp[count($aTemp) - 1]), $aExtensionFile)) {
-                        $bAllowUpload = true;
-                    } else {
-                        foreach ($aExtensionFile as $sValue) {
-                            $sFormat .= " " . $sValue;
-                        }
-                        writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType);
-                        $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType . ERROR_VALID_FILE . $sFormat . '.';
-                    }
-                    break;
-                case "zip" :
-                    if (in_array(extension($aTemp[count($aTemp) - 1]), $aExtensionZip)) {
-                        $bAllowUpload = true;
-                    } else {
-                        foreach ($aExtensionZip as $sValue) {
-                            $sFormat .= " " . $sValue;
-                        }
-                        writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType);
-                        $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType . ERROR_VALID_FILE . $sFormat . '.';
-                    }
-                    break;
-                case "fmw" :
-                    if (in_array(extension($aTemp[count($aTemp) - 1]), $aExtensionFmw)) {
-                        $bAllowUpload = true;
-                    } else {
-                        foreach ($aExtensionFmw as $sValue) {
-                            $sFormat .= " " . $sValue;
-                        }
-                        writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType);
-                        $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType . ERROR_VALID_FILE . $sFormat . '.';
-                    }
-                    break;
-                default :
-
-                    $bAllowUpload = true;
-
-                    break;
-            }
-
-            //Teste si le fichier n'est pas de trop grande taille.
-            if ($_FILES[$sNomObjet]['size'] > $sMaxSize || $_FILES[$sNomObjet]['error'] == 1) {
-                $bAllowUpload = false;
-                if ($_FILES[$sNomObjet]['size'] > $sMaxSize)
-                    $sErrorMsg .= FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . OF_LABEL_PHPUTIL . $_FILES[$sNomObjet]['size'] . ERROR_EXCEED_MAX_SIZE . ' (' . $sMaxSize . LABEL_BYTES_PHPUTIL . ').';
-                if ($_FILES[$sNomObjet]['error'] > $sMaxSize)
-                    $sErrorMsg .= FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_EXCEED_MAX_SIZE_PHP . ' (' . $sMaxSize . LABEL_BYTES_PHPUTIL . ').';
-            }
-            //Lance l'upload.
-            if ($bAllowUpload) {
-                if (!copy($sTmpFile, $sServerPath)) {
-                    writeToErrorLog(ERROR_COPYING_FILE . $_FILES[$sNomObjet]['name'] . ON_SERVER_PHPUTIL . ', ' . $sTmpFile . ', ' . $sServerPath);
-                    $sErrorMsg = ERROR_COPYING_FILE . $_FILES[$sNomObjet]['name'] . ON_SERVER_PHPUTIL . '.';
-                }
-                unlink($sTmpFile);
-                //chmod($sServerPath,755);
-            }
-        } else {
-            writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType);
-            $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_NOT_FILE . $sFileType . ERROR_VALID_FILE . $sFormat . '.';
+    else {
+        $sFilePath = $sDestDir . '/' . $sFileName;
+        if (!copy($sFilePath, $sDestDir . '/' . $sNewFileName)) {
+            writeToErrorLog(ERROR_COPYING_FILE . $sFileName . ON_SERVER_PHPUTIL . ', ' . $sFilePath . ', ' . $sServerPath);
+            $sErrorMsg = ERROR_COPYING_FILE . $sFileName . ON_SERVER_PHPUTIL . '.';
         }
-    } else {
-        writeToErrorLog(ERROR_FILE . $_FILES[$sNomObjet]['name'] . ERROR_DOWNLOAD_SERVER);
-        $sErrorMsg = FILE_LABEL_PHPUTIL . $_FILES[$sNomObjet]['name'] . ERROR_DOWNLOAD_SERVER . ' (' . ERROR_CODE_PHPUTIL . $_FILES[$sNomObjet]['error'] . ').';
     }
-
     return $sErrorMsg;
 }
-
-/**
- * Get all the files of a directory
- * @param string $sDirectoryPath
- * \return array
- */
-function getDirectoryFiles($sDirectoryPath) {
-    $aFiles = array();
-    if (file_exists($sDirectoryPath) && is_dir($sDirectoryPath)) {
-        $oIterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($sDirectoryPath));
-        foreach ($oIterator as $oFileinfo) {
-            if (!$oFileinfo->isDir())
-                $aFiles[] = $oFileinfo->getPathname();
-        }
-    }
-    return $aFiles;
-}
 ?>