Probleme limite Upload [ASP] - ASP - Programmation
Marsh Posté le 20-10-2004 à 09:36:44
oXoiD a écrit : Bonjour, |
la taille maxi se configure sous IIS
=> http://x220.win2ktest.com/forum/to [...] IC_ID=4550
Marsh Posté le 20-10-2004 à 10:15:30
mon message met : Impossible d'afficher la page
ou sinon, des fois il me met : error line 20
>upresult = myup.Upload()
donc je sais pas trop. je pige pas pk ca marche avec les petits fichiers
Marsh Posté le 20-10-2004 à 10:21:52
En gros faut aller dans quoi alien_nan ? car je m'y connais pas trop niveau serveur etc, et chui dans une entreprise, donc g pas envie de casser ou foutre la merde dans leur serveur
Marsh Posté le 20-10-2004 à 10:33:48
akanico, j'ai essayé, mais bon, erreur bien con, il m'affiche en txt le contenu de oz.asp au lieu de lancer le code qu'il ya dedans quoi ... erf pourquoi ?
Marsh Posté le 20-10-2004 à 10:51:06
par contre, ca met vachement longtemps, pour un fichier de 4 mo, chui deja a 5 min et cé pa encore fini, sinon pour que ca redirige vers une autre page quand c'est fini , on fait comment, je vois pas dans le code :
<%
'**********************************************'
'*****Upload sans composant ASP, by Oz, Paris*******'
'**********************************************'
'********** Fonctions secondaires *************
'+--------------------------------------{ Méthode : recherchePosition }-----+
'! !
'! recherchePosition(position_debut,chaine,chaine_recherchee) !
'! !
'! role : retourne la position de "chaine_recherchee" dans !
'! "chaine". La recherche debute à "position_debut". !
'! Valeur retournee : position ou "0" si la chaine n est pas trouvée. !
'+--------------------------------------------------------------------------+
function recherchePosition(position_debut,chaine,chaine_recherchee)
PosDebutFic = Instrb(position_debut, chaine, chaine_recherchee)
' -------------------
' 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)
'recherchePosition = PosDebutFic+Lenb(chaine_recherchee)
recherchePosition =PosDebutFic
end function
'+-----------------------------------------{ Méthode : asciiTObinaire }-----+
'! !
'! asciiTObinaire(chaine) !
'! !
'! role : Transforme une chaine binaire en chaine ASCII. !
'! !
'! Parametres : chaineBinaire = chaine binaire à transformer. !
'! !
'! Valeur retournee : chaine ASCII !
'! !
'+--------------------------------------------------------------------------+
function asciiTObinaire(chaine)
For I=1 to len(chaine)
B = B & ChrB(Asc(Mid(chaine,I,1)))
Next
asciiTObinaire = B
End Function
'+-----------------------------------------{ Méthode : binaireTOascii }-----+
'! !
'! binaireTOascii(chaineBinaire) !
'! !
'! role : Transforme une chaine binaire en chaine ASCII. !
'! !
'! Parametres : chaineBinaire = chaine binaire à transformer. !
'! !
'! Valeur retournee : chaine ASCII !
'! !
'+--------------------------------------------------------------------------+
function binaireTOascii(chaineBinaire)
ContenuAscii = ""
for Z = 1 to LenB(chaineBinaire)
ContenuAscii = ContenuAscii & chr(ASCB(MidB(chaineBinaire, Z, 1)))
next
binaireTOascii = ContenuAscii
end function
'*********** FIN des Fonctions secondaires******************'
'********************************
'***** FONCTION PRINCIPALE*******
'********************************
'********************************
' a appeler par votre script ASP pour le traitement de l'upload.
'-->arguments :
' chainebinaire = Request.BinaryRead(Request.TotalBytes) : Content-Type issue de l'upload
' number = nombre de champs d'upload dans le formulaire ( peut etre amélioré)
' extensionsUploadees: chaine contenant les extensions permises pour l'upload ( séparées par un espace) !!
function LancementUpload (chainebinaire, number,extensionsUploadees)
'chainebinaire = Request.BinaryRead(Request.TotalBytes)
'Grâce à la méthode BinaryRead on lit la totalité du post en mode binaire que l'on place dans une variable Contenu
'La propriété TotalBytes nous Indique le nombre total des octets envoyés par le client dans le corps du message de requête.
'-------------------
Server.ScriptTimeOut=1000
' variable interne qui va nous permettre de nous "balader" dans le Content-Type.
index=60
'string a recuperer a la fin du traitement et qui va permettre de mettre a jour une base de données ...
'sous la forme : "[nom_du_champ_du_formulaire],[nom_du_fichier_uploadé];"
'il suffit ensuite de faire un traitement du type split(stringgeneral,";" ) pour recuperer ces valeurs et les mettre dans une base de données.
' ( a enlever si vous utilisez uniquement l'UPLOAD, sans une mise a jour BDD ).
stringgeneral=""
'on commence la boucle d'upload
for j=1 to number
'initialisation des 3 variables principales utilisées
NomFichier=""
nameform=""
DataFichier=""
'init de la variable de controle des extensions
ctrlext=0
'A / Recherche du nom du fichier uploadé
'---------------------------------'
PosDebutFilename = recherchePosition(index,chainebinaire,asciiTObinaire("filename=" & chr(34)))+10
if PosDebutFilename <> 0 then
PosDebutContentType = recherchePosition(index,chainebinaire,asciiTObinaire("Content-Type:" ))
' On trouve la position de la fin du nom du fichier à 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)
PosFinFilename = PosDebutContentType - 3
if PosFinFilename > PosDebutFilename then
NomFichier = binaireTOascii(midb(chainebinaire,PosDebutFilename,(PosFinFilename-PosDebutFilename)))
end if
Position = InstrRev(NomFichier, "\" )
NomFichierCourt = right(NomFichier, (Len(NomFichier) - Position)) 'nom du fichier SANS le chemin d'acces.
'si un fichier uploadé dans ce champ ...
If (trim(NomFichierCourt))<>"" then
'on trouve l extension du fichier et on la compare aux extensionsUploadees
tab=split(NomFichierCourt,"." )
ext = tab(ubound(tab))
'si extensionsUploadees a ete remplie...
if(extensionsUploadees<>"" ) then
tab2=split(extensionsUploadees," " )
for each exti in tab2
if(exti=ext) then ctrlext=1 end if
next
'sinon, on met ctrlext automatiquement a 1
else
ctrlext=1
end if
end if
end if
'on ne va plus loin que si le ctrlext est OK
if(ctrlext=1) then
'B / Recherche du nom du champ du formulaire correspondant'
'on a besoin de cette valeur pour mettre les valeurs dans la base de données
PosDebutName = recherchePosition(index,chainebinaire,asciiTObinaire("name="&chr(34))) + 6
if(PosDebutName<>0) then
PosDebutFilename= recherchePosition(index,chainebinaire,asciiTObinaire("filename="&chr(34)))
' on trouve la position de la fin du nom du champ a partir de la position
'du debut du terme "filename=", a laquelle on retire 3 octets :
PosFinName = PosDebutFilename-3
if(PosFinName > PosDebutName) then
nameform=binaireTOascii(midb(chainebinaire,PosDebutName,(PosFinName-PosDebutName)))
end if
end if
'C / Recherche du contenu du fichier
oz = recherchePosition(index,chainebinaire,asciiTObinaire("Content-Type:" ))+14 'fin du mot "Content-Type"
'debut du contenu du fichier
'a cet endroit, bcp de scripts que j'ai vus faisaient une erreur d'algo et
' on se retrouvait avec des fichiers uploadés qui etaient BINAIREMENT (donc, souvent dans le contenu)
' différent du fichier original. J'ai debuggé en trouvant LA formule.
PosDebutContenu = recherchePosition(oz,chainebinaire,asciiTObinaire(chr(13)))+4
'fin du contenu du fichier
PosFinContenu=recherchePosition(PosDebutContenu, chainebinaire, asciiTObinaire("----------" ))
'on en deduit le contenu (BINAIRE) du fichier a uploader.
DataFichier =midb(chainebinaire, PosDebutContenu, PosFinContenu-PosDebutContenu)
'D/ Ecriture des données sur le serveur
'-------------------
stringgeneral=stringgeneral & nameform &","&NomFichierCourt&";"
NouveauFic = Server.MapPath("" & NomFichierCourt)
Set FileObject = Server.CreateObject("Scripting.FileSystemObject" )
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
end if 'fin if(ctrlext=1)
'on met a jour l'index pour la recherche d'apres.
index=PosDebutContentType+20
next 'fin for j=1 to number
LancementUpload=stringgeneral
end function
%>
Marsh Posté le 20-10-2004 à 11:47:21
oXoiD a écrit : CA MARCHE !!!!!! té un patron akanico |
Merci! Mais ce n'est pas de moi. C'est vrai que ça met un peu de temps mais ça dépend aussi de la bande passante.
Marsh Posté le 20-10-2004 à 14:30:10
bon, laisse tombé, apparement, c'est méga bcp trop lent, et ca ne viens pas de ma boite, car meme pour un fichier de 10 ko, ca met relativement longtemps, ce qui n'est pas du tout normal, on m'a demandé de faire avec ASPUPLOAD, mais je pige pas, il me met cette erreur :
/intranet/UploadScript1.asp, line 10
ce qui correspond a :
Set Upload = Server.CreateObject("Persits.Upload" )
sachant que le code entier est :
<!-- AspUpload Code samples: UploadScript1.asp -->
<!-- Invoked by Form1.asp -->
<!-- Copyright (c) 2001 Persits Software, Inc. -->
<!-- http://www.persits.com -->
<HTML>
<BODY>
<%
Set Upload = Server.CreateObject("Persits.Upload" )
Count = Upload.Save("c:\upload" )
Response.Write Count & " file(s) uploaded to c:\upload "
%>
</BODY>
</HTML>
qq a til une reponse ?
Marsh Posté le 20-10-2004 à 15:53:32
C'est étonnant..... C'est pas rapide mais ça va quand même (une vingtaine de secondes pour un fichier de 1Mo). C'est suffisant dans mon cas.
Tes fichiers font quelles tailles?
Marsh Posté le 20-10-2004 à 15:55:07
ca va de 5ko a 100 mo, mais nan, la ca couille, je sais pas de quoi ca vient mais c'est bcp trop lent, enfin bon, j'essaye avec aspupload, t'as lu mon probleme ?
je pige pas, pourtant ya ligne de code, ca devrait marcher nan ?
Marsh Posté le 21-10-2004 à 19:10:38
Salut,
J'ai sensiblement le même problème qu'Oxoid.
J'ai fait un upload avec AspSmartUpload, ça marche bien pour des petits fichiers, mais dès qu'on atteint les 3 Mo (environ), on obtient un message d'erreur de timeout.
Dans le message, il est marqué qu'on peut régler ce problème dans la config d'IIS, mais après une fouille minutieuse, je n'ai rien trouvé comme paramétrage de ce genre...
Pour complément d'information, je suis sous XP avec IIS 5.1.
C'est con parce que le but de mon système est de transférer surtout des fichiers très lourds destinés à l'impression (environ 500 Mo).
Donc, si quelqu'un connaît un meilleur système qu'AspSmartUpload, merci du coup de main.
Par ailleurs, est-ce que quelqu'un saurait comment intégrer une barre de progression dans le transfert du fichier?
Merci d'avance.
Marsh Posté le 22-10-2004 à 09:10:41
ouais, j'avoue, ca m'interesserait aussi, il me semble sinon, que pour les gros gros fichiers, on m'a dit qu'un ftp serait mieux.
Sinon, encore des questions :
j'ai trouvé dirtlist 211 , c'est un petit programme qui permet également d'uploader etc, et qui en plus possède une petite interface pour voir les fichiers uploadé dans des dossiers etc.. enfin assez sympa, le problème est que je n'arrive pas à trouver le dossier "parent" a régler pour qu'il voit les fichiers que j'upload. je vous donne donc le code, et la fiche explicative (site) :
http://www.asp-magazine.com/fr/dirlist/
sinon, voilà le code, c'est assez long
Code :
|
bon je sais c'est assez chiant, mais là, j'ai mis tout, ce qui a mon avis est important c'est le "dossier parent", en fait, je sais pas quoi mettre dans : Paren = **** pour qu'il trouve mon dossier d'upload si par exemple c'est isrvad/transfert
Marsh Posté le 22-10-2004 à 10:07:37
Bilou33 a écrit : Salut, |
Pour la partie config, voir mon premier post en haut de la page
Marsh Posté le 22-10-2004 à 10:45:38
et pour le dossier parent ? pour les programmateurs, ca doit être méga bidon ma question, c'est juste un chemin vers un dossier en gros, c'est juste, que moi je comprend pas trop le code, donc je sais pas trop ou le mettre ce chemin, pi la syntaxe quoi, svp !!
merci
Marsh Posté le 20-10-2004 à 09:14:26
Bonjour,
j'ai un gros problème que je dois absolument réglé au plus vite; voilà, j'ai fait une partie upload download sur mon intranet et ya une partie qui ne marche pas :
J'arrive a faire fonctionner mon code, l'upload fonctionne, mais que pour des fichiers <2 Mo et je pîge pas pourquoi, ocmment faire pour agrandir cette limite ?
help ! merci
ps : voici le code :
<%
'Initialize the component
Set myup = Server.CreateObject("NetVIOSUpload.Upload" )
'Set the name of the GUI control used in acquiring the file (from the first file)
myup.FileUploadControl = "File1"
'Set the path on the web server in which file is to be saved
myup.SavePath = "d:\intranet\transfert"
'Set the maximum allowable file size in bytes
myup.FileType = "Alltypes"
'myup.MaximumSize = 500000000000
'Set the overwrite property
myup.OverwriteFiles = True
'Perform the upload
upresult = myup.Upload()
If (upresult = "Success" ) Then
'Print an optional report of files downloaded
For i = 1 To myup.GetFileCount
Response.Write "The file - " & myup.GetFileName(i) & " of size " & myup.GetFileSize(i)
Response.Write " was successfully uploaded!"
Response.Redirect("transfertok.asp" )
Next
else
Response.Redirect("transferterreur.asp" )
End If
'Destroy the upload component instance after use
Set myup = Nothing
%>
+++