Bonjour,

J'ai repris un script d'upload de fichiers, qui utilise le composant Smart Upload, afin de pouvoir uploader des fichiers PDF.
Ce script fonctionne mais seulement pour les fichiers dont la taille est inférieur à environ 200 Ko (d'après quelques tests).

J'ai donc essayé de définir une taille maximale :

FSO.MaxFileSize = 5000000
FSO.totalMaxFileSize = 5000000

Mais cela ne fonctionne toujours pas.
De plus, je n'arrive pas à avoir plus d'informations sur l'erreur, le seul message qui s'affiche est : "Une erreur s'est produite sur le serveur lors du traitement de l'URL. Contactez l'administrateur système."

Je vous fais un copié/collé de la page ASP qui traite l'upload du fichier :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<%
Dim Contenu, TailleContenu, ContenuAscii, X, Y, Z, Position, image, num, tab(12), SQLid, ObjRSid, mois
Contenu = Request.BinaryRead(Request.TotalBytes) 
TailleContenu = Request.TotalBytes
' -------------------
ToutOk = 0  	   
' ToutOk est une Variable Test (si tout est Ok, elle prend la valeur 1 sinon elle reste à 0
PosDebutFic=0   
' PosDebutFic représente la position de l'octet où se trouve le début du Nom du fichier transmis
PosFinFic=0     
' PosFinFic représente la position de l'octet où se trouve la fin du Nom du fichier transmis   
PosDebutCont=0  
' PosDebutCont représente la position de l'octet où se trouve le début du Content-Type du fichier   
PosFinCont=0    
' PosFinCont représente la position de l'octet où se trouve la fin du Content-Type du fichier   
PosDebutFic2=0   
' PosDebutFic2 représente la position de l'octet où se trouve le début du Contenu du fichier   
PosFinFic2=0     
' PosFinFic2 représente la position de l'octet où se trouve la fin du Contenu du fichier   
X = 0
Y = 1
Position = 1
' -------------
' En premier lieu, on recherche la position du terme filename="
' Pour ce faire, on calcul le nombre d'octet (LimitBin) du premier élément jusqu'à filename=" (on effectue une boucle jusqu'au nombre d'octets correspondant au terme filename=")
LimitASCII = "filename=" & chr(34) 
LimitBin=""
for Z = 1 to Len(LimitASCII)
	LimitBin = LimitBin & chrB(ASC(Mid(LimitASCII, Z, 1)))
next
' -------------------
' On recherche la position de l'octet de la chaîne Contenu jusqu'à LimitBin   
' On utilise la fonction InStrB qui est disponible pour être utilisée avec les données de type octet contenues dans une chaîne. Au lieu de renvoyer la position du caractère de la première occurrence d'une chaîne à l'intérieur d'une autre (fonction Instrv), la fonction InStrB renvoie la position de l'octet. 
PosDebutFic = InstrB(1, Contenu, LimitBin)
' -------------------
' On lui ajoute ensuite la longueur du terme filename=" ce qui nous permet d'avoir la position de début du nom du fichier (PosDebutFic)
if PosDebutFic <> 0 then
	PosDebutFic = PosDebutFic + LenB(LimitBin)
end if
' -------------------
' En premier lieu, on recherche la position du terme Content-Type: d'une façon similaire à notre recherche pour le terme filename="
LimitASCII = "Content-Type:" 
LimitBin=""
For Z = 1 to Len(LimitASCII)
	LimitBin = LimitBin & chrB(ASC(Mid(LimitASCII, Z, 1)))
next
PosDebutCont = InstrB(1, Contenu, LimitBin)
 
if PosDebutCont <> 0 then
' On trouve la position de la fin du nom du fichier (PosFinFic) à partir de la position du début du terme Content-Type: à laquelle on retire trois octets (un espace, une " et la première lettre du terme)   
	PosFinFic = PosDebutCont - 3
' -------------------
' On ajoute à PosDebutCont la longueur du terme Content-Type: , ce qui nous permet d'avoir la position de début du Content-Type (PosDebutCont)
	PosDebutCont = PosDebutCont + LenB(LimitBin)
end if
' -------------------   
' On en déduit le nombre de caractères composant le nom du fichier en effectuant une soustraction
NomFichier = MidB(Contenu, PosDebutFic , (PosFinFic - PosDebutFic)) 
' -------------------   
' Nous n'avons plus qu'à traduire en texte grâce à la fonction ASCB et trouver ainsi le nom du fichier (NomFichier)
ContenuAscii = ""
for Z = 1 to LenB(NomFichier)
	ContenuAscii = ContenuAscii & chr(ASCB(MidB(NomFichier, Z, 1)))
next
NomFichier = ContenuAscii
' -------------------   
' On cherche la position de début du contenu du fichier en sautant les blancs
PosFinCont = InstrB(PosDebutCont, Contenu, chrB(13))
if PosFinCont <> 0 then
	PosDebutFic2 = PosFinCont + 4 
end if
' -------------------   
' On recherche la position de fin du contenu du fichier 
LimitASCII = "----"
LimitBin=""
for Z = 1 to Len(LimitASCII)
	LimitBin = LimitBin & chrB(ASC(Mid(LimitASCII, Z, 1)))
next
PosFinFic2 = InstrB(PosDebutFic2, Contenu, LimitBin)
' -------------------   
' Si la position de fin du contenu du fichier n'est pas 0 alors tout est OK
if PosFinFic2 <> 0 then
	ToutOk = 1 
end if 
' -------------------   
' On place le contenu binaire du fichier transmis dans la variable DataFichier
DataFichier = MidB(Contenu, PosDebutFic2 , (PosFinFic2 - PosDebutFic2)) 
' -------------------   
' Si tout est ok, on écrit dans un fichier à la racine du serveur en plaçant d'abord dans une variable NouveauFic le chemin complet du fichier à écrire.
If ToutOk = 1 then 
	Position = InstrRev(NomFichier, "\")
	NomFichierCourt = right(NomFichier, (Len(NomFichier) - Position))
 
	if (Len(NomFichierCourt) = 0) then		'Cas ou aucun fichier n'est précisé
		Response.Redirect("upload2-pdf.asp")
	end if
 
	NouveauFic = Server.MapPath("..") &  "\pdf\" &NomFichierCourt
 
	Set FileObject = Server.CreateObject("Scripting.FileSystemObject")
	FileObject.MaxFileSize = 5000000
	FileObject.totalMaxFileSize = 5000000
	Set Out=FileObject.CreateTextFile(NouveauFic, True)
	For I = 1 to LenB(DataFichier)
		Out.Write chr(AscB(MidB(DataFichier,I,1)))
	Next
	Out.close
	Set Out=nothing
 
	Set FSO = _
    Server.CreateObject("Scripting.FileSystemObject")
	FSO.MaxFileSize = 5000000
	FSO.totalMaxFileSize = 5000000
	dir = Server.MapPath("..")
	Set filePt = FSO.getFile(dir & "\pdf\"&NomFichierCourt)
	filePt.Move dir & "\pdf\"&session("nompdf")& ".pdf"
 
	session("pdf") = "pdf/" & session("nompdf") & ".pdf"
	session("valid") = 1
end if
%>
Pour info je débute en ASP, à la base je fais plutôt du PHP, donc j'ai pas énormément de connaissances.

Merci de votre aide.