Trucsweb.com

Forum de discussion

 Forum « Programmation ASP » (archives)

Re: Transférer un fichier du PC vers le serveur WEB ...

Envoyé: 1er août 2002, 9h05 par Oznog


Salut,

Plusieurs, comme moi, utilise une composante. SoftArtisans FileUp ou AspsmartUpload par exemple...

SoftArtisans FileUp
http://www.softartisans.com/softartisans/saf.html

aspSmartUpload
http://www.hallogram.com/aspsmart/upload/
http://www.laltruiste.com/coursasp/composant_smartupload.html

Mais tu peux aussi le faire directement en ASP (dépendant du serveur, sécurité, version...): ATTENTION, il y a deux fichiers, le formulaire et celui qui fait le upload.

-------- Formulaire ---------
<html>
<head>
<title>Upload a File With ASP!</title>
</head>
<body>
<form action="filePost.asp"
enctype="multipart/form-data" method="post"
name="f" id="f">
Pick a file to upload:<br >
<input type="file" name="test" size="50" >
<br >
<input type="radio" name="filename"
value="original" checked >
Use filename from disk
<br >
<input type="radio" name="filename"
value="userSpecified" >
Use the following name:
<input type="text" name="userSpecifiedName"
value="" >
<br >
<input type="submit" value="submit" >
</form>
</body>
</html>

-------- Fichier d'upload ---------
<%
'Adjust this depending on the size of the files you'll
'be expecting; longer timeout for larger files!
Server.ScriptTimeout = 5400

Const ForWriting = 2
Const TristateTrue = -1
CrLf = Chr(13) & Chr(10)

'This function retreives a field's name
Function GetFieldName(infoStr)
sPos = InStr(infoStr, "name=")
EndPos = InStr(sPos + 6, infoStr, Chr(34) & ";")
If EndPos = 0 Then
EndPos = inStr(sPos + 6, infoStr, Chr(34))
End If
GetFieldName = Mid(infoStr, sPos + 6, endPos - _
(sPos + 6))
End Function

'This function retreives a file field's filename
Function GetFileName(infoStr)
sPos = InStr(infoStr, "filename=")
EndPos = InStr(infoStr, Chr(34) & CrLf)
GetFileName = Mid(infoStr, sPos + 10, EndPos - _
(sPos + 10))
End Function

'This function retreives a file field's MIME type
Function GetFileType(infoStr)
sPos = InStr(infoStr, "Content-Type: ")
GetFileType = Mid(infoStr, sPos + 14)
End Function

'Yank the file (and anything else) that was posted
PostData = ""
Dim biData
biData = Request.BinaryRead(Request.TotalBytes)
'Careful! It's binary! So, let's change it into
'something a bit more manageable.
For nIndex = 1 to LenB(biData)
PostData = PostData & Chr(AscB(MidB(biData,nIndex,1)))
Next

'Having used BinaryRead, the Request.Form collection is
'no longer available to us. So, we have to parse the
'request variables ourselves!
'First, let's find that encoding type!
ContentType = Request.ServerVariables( _
"HTTP_CONTENT_TYPE")
ctArray = Split(ContentType, ";")
'File posts only work well when the encoding is
'"multipart/form-data", so let's check for that!
If Trim(ctArray(0)) = "multipart/form-data" Then
ErrMsg = ""
' grab the form boundary...
bArray = Split(Trim(ctArray(1)), "=")
Boundary = Trim(bArray(1))
'Now use that to split up all the variables!
FormData = Split(PostData, Boundary)
'Extract the information for each variable and its data
Dim myRequest, myRequestFiles(9, 3)
Set myRequest = CreateObject("Scripting.Dictionary")
FileCount = 0
For x = 0 to UBound(FormData)
'Two CrLfs mark the end of the information about
'this field; everything after that is the value
InfoEnd = InStr(FormData(x), CrLf & CrLf)
If InfoEnd > 0 Then
'Get info for this field, minus stuff at the end
varInfo = Mid(FormData(x), 3, InfoEnd - 3)
'Get value for this field, being sure to skip
'CrLf pairs at the start and the CrLf at the end
varValue = Mid(FormData(x), InfoEnd + 4, _
Len(FormData(x)) - InfoEnd - 7)
'Is this a file?
If (InStr(varInfo, "filename=") > 0) Then
'Place it into our files array
'(While this supports more than one file
'uploaded at a time we only consider the
'single file case in this example)
myRequestFiles(FileCount, 0) = GetFieldName( _
varInfo)
myRequestFiles(FileCount, 1) = varValue
myRequestFiles(FileCount, 2) = GetFileName( _
varInfo)
myRequestFiles(FileCount, 3) = GetFileType( _
varInfo)
FileCount = FileCount + 1
Else
'It's a regular field
myRequest.add GetFieldName(varInfo), varValue
End If
End If
Next
Else
ErrMsg = "Wrong encoding type!"
End If

'Save the actual posted file
'If supporting more than one file, turn this into a loop!

Set lf = server.createObject("Scripting.FileSystemObject")
If myRequest("filename") = "original" Then
'Use the filename that came with the file
'At this point, you need to determine what sort of
'client sent the file. Macintoshes only send the file
'name, with no path information, while Windows clients
'send the entire path of the file that was selected
BrowserType = UCase(Request.ServerVariables( _
"HTTP_USER_AGENT"))
If (InStr(BrowserType, "WIN") > 0) Then
'It's Windows; yank the filename off the end!
sPos = InStrRev(myRequestFiles(0, 2), "\")
fName = Mid(myRequestFiles(0, 2), sPos + 1)
End If
If (InStr(BrowserType, "MAC") > 0) Then
'It's a Mac. Simple.
'(Mac filenames can contain characters that are
'illegal under Windows, so look out for that!)
fName = myRequestFiles(0, 2)
End If
'If your upload path is different, set that here
FilePath = "./" & fName
Else
'Use the user-specified filename instead
'If your upload path is different, set that here
FilePath = "./" & myRequest("userSpecifiedName")
End If
SavePath = Server.MapPath(FilePath)
Set SaveFile = lf.CreateTextFile(SavePath, True)
SaveFile.Write(myRequestFiles(0, 1))
SaveFile.Close

'IIS may hang if you don't explicitly return SOMETHING.
'So, redirect to another page or provide some kind of
'feedback below...
%>
<html>
<body>
<% If ErrMsg = "" Then %>
Thanks for the file! It was yummy!
<% Else %>
<%= ErrMsg %>
<% End If %>
</body>
</html>

Ciao
Oznog


Réponses

 Aucune réponse à ce message... 
Aucun médias sociaux
X

Trucsweb.com Connexion

Connexion

X

Trucsweb.com Mot de passe perdu

Connexion

X

Trucsweb.com Conditions générales

Conditions

Responsabilité

La responsabilité des Trucsweb.com ne pourra être engagée en cas de faits indépendants de sa volonté. Les informations mises à disposition sur ce site le sont uniquement à titre purement informatif et ne sauraient constituer en aucun cas un conseil ou une recommandation de quelque nature que ce soit.

Aucun contrôle n'est exercé sur les références et ressources externes, l'utilisateur reconnaît que les Trucsweb.com n'assume aucune responsabilité relative à la mise à disposition de ces ressources, et ne peut être tenue responsable quant à leur contenu.

Droit applicable et juridiction compétente

Les règles en matière de droit, applicables aux contenus et aux transmissions de données sur et autour du site, sont déterminées par la loi canadienne. En cas de litige, n'ayant pu faire l'objet d'un accord à l'amiable, seuls les tribunaux canadien sont compétents.

X

Trucsweb.com Trucsweb

X

Trucsweb.com Glossaire

X

Trucsweb.com Trucsweb

X

Trucsweb.com Trucsweb

Conditions

Aucun message!

Merci.

X
Aucun message!
X

Trucsweb.com Créer un compte

Créer un compte

.
@