diff --git a/ecrire/inc/getdocument.php b/ecrire/inc/getdocument.php
index 643222a65c76096e35fe2ce468e8905c3f4fd0ca..968e7fdb914e8ff5683803d1c92d631dc01e7f63 100644
--- a/ecrire/inc/getdocument.php
+++ b/ecrire/inc/getdocument.php
@@ -141,6 +141,19 @@ function check_upload_error($error, $msg='') {
 		' &gt;&gt;"></div></form>');
 }
 
+// Erreur appelee depuis public.php (la precedente ne fonctionne plus
+// depuis qu'on est sortis de spip_image.php, apparemment).
+function erreur_upload_trop_gros() {
+	include_spip('inc/filtres');
+	minipres(_T('pass_erreur'),
+		"<p>"
+		.taille_en_octets($_SERVER["CONTENT_LENGTH"])
+		.'<br />'
+		._T('upload_limit',
+		array('max' => ini_get('upload_max_filesize')))
+		."</p>");
+	exit;
+}
 
 //
 // Gestion des fichiers ZIP
diff --git a/ecrire/public.php b/ecrire/public.php
index 8d144786ff5ee3f45ba0d827a9abc94c63366a36..5eb89435a0aa9127864b156c69c0d0e84bf9e6c8 100644
--- a/ecrire/public.php
+++ b/ecrire/public.php
@@ -64,8 +64,19 @@ if (defined('_INC_PUBLIC')) {
 			die (_L("Faut pas se gener"));
 
 	# par defaut
-	} else
+	} else {
+		// traiter le cas pathologique d'un upload de document ayant echoue
+		// car trop gros
+		if (empty($_GET) AND empty($_POST) AND empty($_FILES)
+		AND strlen($_SERVER["CONTENT_LENGTH"]) >= 7
+		AND strstr($_SERVER["CONTENT_TYPE"], "multipart/form-data;")) {
+			include_spip('inc/getdocument');
+			erreur_upload_trop_gros();
+		}
+
+		// mais plus probablement nous sommes dans le cas
 		$fond = 'sommaire';
+	}
 
 	// Particularites de certains squelettes
 	if ($fond == 'login')