diff --git a/inc/joindre_document.php b/inc/joindre_document.php
index b7147b3ddfe96ba57f25581af00b09b9f65aacfd..72ac41ce26c8d03c640ae11f1e8f971f14a1f079 100644
--- a/inc/joindre_document.php
+++ b/inc/joindre_document.php
@@ -33,44 +33,20 @@ function joindre_trouver_fichier_envoye() {
 	}
 
 	if (_request('joindre_upload')) {
-		$post = isset($_FILES) ? $_FILES : $GLOBALS['HTTP_POST_FILES'];
-		$files = [];
-		if (is_array($post)) {
-			include_spip('action/ajouter_documents');
-			foreach ($post as $file) {
-				if (is_array($file['name'])) {
-					while (count($file['name'])) {
-						$test = [
-							'error' => array_shift($file['error']),
-							'name' => array_shift($file['name']),
-							'tmp_name' => array_shift($file['tmp_name']),
-							'type' => array_shift($file['type']),
-						];
-						if (!($test['error'] == 4)) {
-							if (is_string($err = joindre_upload_error($test['error']))) {
-								return $err;
-							} // un erreur upload
-							if (!is_array(verifier_upload_autorise($test['name']))) {
-								return _T('medias:erreur_upload_type_interdit', ['nom' => $test['name']]);
-							}
-							$files[] = $test;
-						}
-					}
-				} else {
-					//UPLOAD_ERR_NO_FILE
-					if (!($file['error'] == 4)) {
-						if (is_string($err = joindre_upload_error($file['error']))) {
-							return $err;
-						} // un erreur upload
-						if (!is_array(verifier_upload_autorise($file['name']))) {
-							return _T('medias:erreur_upload_type_interdit', ['nom' => $file['name']]);
-						}
-						$files[] = $file;
-					}
-				}
-			}
-			if (!count($files)) {
-				return _T('medias:erreur_indiquez_un_fichier');
+		$files = joindre_trouver_http_post_files();
+		// erreur ?
+		if (is_string($files)) {
+			return $files;
+		}
+		// rien envoye ?
+		if (!count($files)) {
+			return _T('medias:erreur_indiquez_un_fichier');
+		}
+		// verifions les types de fichier envoyes
+		include_spip('action/ajouter_documents');
+		foreach ($files as $file) {
+			if (!is_array(verifier_upload_autorise($file['name']))) {
+				return _T('medias:erreur_upload_type_interdit', ['nom' => $file['name']]);
 			}
 		}
 
@@ -167,6 +143,56 @@ function joindre_trouver_fichier_envoye() {
 	return [];
 }
 
+/**
+ * Récupérer et mettre en forme la liste des fichiers postes
+ * que ce soit via plusieurs input file ou via un input file multiple
+ * @param $name : nom de l'input qu'on veut recuperer si on ne veut pas tous les fichiers
+ * @return array|string
+ *   string en cas d'erreur
+ */
+function joindre_trouver_http_post_files($name = null) {
+	$post = isset($_FILES) ? $_FILES : $GLOBALS['HTTP_POST_FILES'];
+	$files = [];
+	if (is_array($post)) {
+		foreach ($post as $input_name => $file) {
+			if ($name and $input_name !== $name) {
+				continue;
+			}
+			if (is_array($file['name'])) {
+				while (count($file['name'])) {
+					$test = [
+						'input_name' => $input_name,
+						'error' => array_shift($file['error']),
+						'name' => array_shift($file['name']),
+						'tmp_name' => array_shift($file['tmp_name']),
+						'type' => array_shift($file['type']),
+					];
+					//UPLOAD_ERR_NO_FILE
+					if (!($test['error'] == 4)) {
+						// un erreur upload
+						if (is_string($err = joindre_upload_error($test['error']))) {
+							return $err;
+						}
+						$files[] = $test;
+					}
+				}
+			} else {
+				//UPLOAD_ERR_NO_FILE
+				if (!($file['error'] == 4)) {
+					// un erreur upload
+					if (is_string($err = joindre_upload_error($file['error']))) {
+						return $err;
+					}
+					$file['input_name'] = $input_name;
+					$files[] = $file;
+				}
+			}
+		}
+	}
+
+	return $files;
+}
+
 
 // Erreurs d'upload
 // renvoie false si pas d'erreur