2

はい、クラシック ASP を使用しています。レガシ アプリケーションをサポートしているわけではありません。目的: ファイルをアップロードし、"/uploads" などの特定のディレクトリ内のサーバーに保存する別の .asp ページに送信するフォーム ページが必要です。私はaspやasp.netに慣れていないので、これは初めてです。テストプロトタイプを作成しました:

フォームページ:

<!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>

処理ページ:

<%

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

%>

問題は、スクリプトをアップロードまたは実行しようとするたびに、次のエラーが発生することです。

Microsoft VBScript runtime error '800a0035'
File not found
/tbird/fileUpload/process.asp, line 25

明らかに、私はファイルに正しくマッピングしていません。スタックしている主な理由は、MoveFileメソッドの最初のパラメーターでファイルに正しくマッピングしていないためだと思います。ファイルを参照する方法や、間違っているかどうかを誰かに教えてもらえますか?

事前に感謝します。すべてを検索して助けていただき、クラシック ASP とファイルのアップロードに関連して見つけたものはすべて、購入できるクラスであり、そうしたくありません。

4

2 に答える 2

8

Pure ASP Uploadのようなソリューションをご覧ください。役立つはずです。従来の ASP では、データがmultipart/form-dataRequest.Formで送信されたときに直接アクセスすることはできないため、 ASPUploadなどのサード パーティ コンポーネントを使用するか、リクエストを解析してメソッドを公開する作業を行う ASP クラスを使用するかを選択できます。ファイルを保存します。

于 2013-02-20T20:49:05.417 に答える
-1

ファイルを移動するときは、ファイル名も指定する必要があります。

変化する:

fs.MoveFile fileOrigPath, newPath

に:

fs.MoveFile fileOrigPath & fileName, newPath & fileName

上記の「file」変数ではなく、「fileName」がファイル名の正しい変数であると仮定します。

于 2013-02-21T06:48:23.843 に答える