Télécharger un fichier en ASP Classique sans une autre classe complètement personnalisé
Oui, je suis en utilisant ASP Classique, pas par choix je suis l'appui d'une application existante. Objectif: j'ai besoin d'avoir une page de formulaire qui se soumet à l'autre .page asp qui permet de télécharger le fichier et le stocker sur le serveur dans un certain répertoire "/uploads". Je ne suis pas très familier avec l'asp ou asp.net donc, je suis très nouveau à ce. J'ai créé un prototype d'essai:
Page de formulaire:
<!DOCTYPE html>
<head>
<title>Test upload</title>
</head>
<body>
<form action="process.asp" method="post" enctype="multipart/form-data">
<p>Filename: <input type="text" name="filename" size="50" /></p>
<p><input type="file" name="file" /><input type="submit" value="Upload file" /></p>
</form>
</body>
</html>
La page de traitement:
<%
Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set tfolder = fs.GetSpecialFolder(2)
tname = fs.GetTempName
'Declare variables
Dim fileSize
Dim filename
Dim file
Dim fileType
Dim p
Dim newPath
'Assign variables
fileSize = Request.TotalBytes
fileName = Request.form("filename")
file = request.form("file")
fileType = fs.GetExtensionName(file)
fileOldPath = tfolder
newPath = Server.MapPath("/uploads/")
fs.MoveFile fileOrigPath, newPath
set fs = nothing
%>
Le problème est que chaque fois que j'essaie de télécharger ou d'exécuter le script, j'obtiens cette erreur:
Microsoft VBScript runtime error '800a0035'
File not found
/tbird/fileUpload/process.asp, line 25
Évidemment, je ne suis pas la cartographie correctement dans le fichier et je pense que la principale raison pour laquelle je suis coincé, c'est que dans le premier paramètre de la MoveFile
méthode, je ne suis pas de cartographie pour le fichier correctement. Quelqu'un peut-il me dire comment je dois être référencer le fichier ou si je le fais mal?
Merci d'avance je voudrais vraiment apprécier l'aide que j'ai cherché partout et de tout ce que j'ai trouver pour l'asp classique et le téléchargement de fichiers sont des classes que vous pouvez acheter et je ne veux pas le faire.
- Votre code ne permet pas de télécharger quoi que ce soit. En ASP classique, il ne peut pas être fait en une seule ligne de code compliqué doit être utilisé puisque vous avez à lire les données binaires brutes et d'analyser vous-même. vous pouvez également utiliser le code que j'ai écrit il y a quelques années, il peut être trouvé ici vous avez besoin de prendre le fichier à partir du fichier ZIP et il y a des exemples de code.
- Je me demandais si cela peut être le cas, donc, essentiellement, ce que vous dites, c'est que je dois prendre le fichier et le lire, puis écrire le contenu d'un fichier et l'enregistrer quelque part? Je suis tellement confus sur ce que je suis un développeur php afin de soutenir un héritage de l'application en asp a été certainement une courbe d'apprentissage
- Le navigateur envoie le contenu du fichier en plus de toutes les données de formulaire en un seul flux binaire de données sur le serveur, le
enctype="multipart/form-data"
est responsable de cela. Le serveur doit alors analyser les données brutes de retour au contenu du fichier et les données de formulaire, PHP et ASP.NET sont assez intelligents pour le faire sans code supplémentaire mais en ASP classique ne l'est pas.
Vous devez vous connecter pour publier un commentaire.
Ont un coup d'oeil à une solution comme Pure ASP Télécharger, il devrait vous aider. En ASP classique, vous ne pouvez pas accéder directement
Request.Form
lorsque les données sont envoyées dans multipart/form-data, alors vous avez le choix de l'utilisation de composants tiers comme ASPUpload ou un ASP de classe qui fait le travail de l'analyse de la demande et en exposant les méthodes pour enregistrer le fichier.Lors du déplacement de fichiers, vous devez également spécifier les noms de fichier.
Changement:
À:
En supposant que "nom de fichier" est la bonne variable pour le nom de fichier et non pas "fichier" de la variable ci-dessus.