2016-12-16 8 views
0

ここでは、ASPスクリプトで何か問題があります。以下は、私が画像をアップロードするユーザーのためのアップロード機能のために使用していたコードであるアップロード機能FilePathエラー

<% 
' Create the FileUploader 
Dim Uploader, File, FileSys, FilePath 
Set Uploader = New FileUploader 

' This starts the upload process 
Uploader.Upload() 

' Check if any files were uploaded 

If Uploader.Files.Count = 0 Then 
    Response.Write "File(s) not uploaded." 
Else 
    ' Loop through the uploaded files 
    For Each File In Uploader.Files.Items 

     ' Set upload Path and Filename to check if that file already exists 
     FilePath = "C:\inetpub\wwwroot\coursework2\database\uploads\"&File.FileName 
     Set FileSys = CreateObject("Scripting.FileSystemObject") 

     ' If intended uploaded file already exists in the specified directory do alert and redirect previous page 
     If FileSys.FileExists(FilePath) then 
      Response.Write("<script>alert('Sorry FileName:"& File.FileName &" Already Used!! Please Rename Your Local File')</script>") 
      Response.Write("<script>window.location.href='index.asp'</script>") 
     else 
      ' Else Save the file 
      File.SaveToDisk "C:\inetpub\wwwroot\coursework2\database\uploads" 
     end if 
    Next 
    ' Confirm file saved and redirect to previous page if more files to be uploaded 
    Response.Write("<script>alert('File Saved')</script>") 
    Response.Write("<script>window.location.href='index.asp'</script>") 
End If 

%> 

これは私があまりにも

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source="& Server.MapPath("/dek0272/coursework2/database/uploads") 

これはどこでファイルをアップロードしようとしているサーバーへの接続文字列であります私は、このアドレスにディスクの場所へのファイルパスとfile.saveを変更すると

http://focserver.londonmet.ac.uk/dek0272/coursework2/database/uploads/ 

としてディスクの場所へのファイルパスとfile.saveを設定したいと思います。この関数は何もアップロードしません。私はパスを間違って書いています。私はそれを書くために多くの方法を試したが、まだ運がない。

おかげ

これはupLoadFunctions.aspファイル

<% 

Class FileUploader 
    Public Files 
    Private mcolFormElem 

    Private Sub Class_Initialize() 
     Set Files = Server.CreateObject("Scripting.Dictionary") 
     Set mcolFormElem = Server.CreateObject("Scripting.Dictionary") 
    End Sub 

    Private Sub Class_Terminate() 
     If IsObject(Files) Then 
      Files.RemoveAll() 
      Set Files = Nothing 
     End If 
     If IsObject(mcolFormElem) Then 
      mcolFormElem.RemoveAll() 
      Set mcolFormElem = Nothing 
     End If 
    End Sub 

    Public Property Get Form(sIndex) 
     Form = "" 
     If mcolFormElem.Exists(LCase(sIndex)) Then Form = mcolFormElem.Item(LCase(sIndex)) 
    End Property 

    Public Default Sub Upload() 
     Dim biData, sInputName 
     Dim nPosBegin, nPosEnd, nPos, vDataBounds, nDataBoundPos 
     Dim nPosFile, nPosBound 

     biData = Request.BinaryRead(Request.TotalBytes) 
     nPosBegin = 1 
     nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13))) 

     If (nPosEnd-nPosBegin) <= 0 Then Exit Sub 

     vDataBounds = MidB(biData, nPosBegin, nPosEnd-nPosBegin) 
     nDataBoundPos = InstrB(1, biData, vDataBounds) 

     Do Until nDataBoundPos = InstrB(biData, vDataBounds & CByteString("--")) 

      nPos = InstrB(nDataBoundPos, biData, CByteString("Content-Disposition")) 
      nPos = InstrB(nPos, biData, CByteString("name=")) 
      nPosBegin = nPos + 6 
      nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34))) 
      sInputName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin)) 
      nPosFile = InstrB(nDataBoundPos, biData, CByteString("filename=")) 
      nPosBound = InstrB(nPosEnd, biData, vDataBounds) 

      If nPosFile <> 0 And nPosFile < nPosBound Then 
       Dim oUploadFile, sFileName 
       Set oUploadFile = New UploadedFile 

       nPosBegin = nPosFile + 10 
       nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34))) 
       sFileName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin)) 
       oUploadFile.FileName = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\")) 

       nPos = InstrB(nPosEnd, biData, CByteString("Content-Type:")) 
       nPosBegin = nPos + 14 
       nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13))) 

       oUploadFile.ContentType = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin)) 

       nPosBegin = nPosEnd+4 
       nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2 
       oUploadFile.FileData = MidB(biData, nPosBegin, nPosEnd-nPosBegin) 

       If oUploadFile.FileSize > 0 Then Files.Add LCase(sInputName), oUploadFile 
      Else 
       nPos = InstrB(nPos, biData, CByteString(Chr(13))) 
       nPosBegin = nPos + 4 
       nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2 
       If Not mcolFormElem.Exists(LCase(sInputName)) Then mcolFormElem.Add LCase(sInputName), CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin)) 
      End If 

      nDataBoundPos = InstrB(nDataBoundPos + LenB(vDataBounds), biData, vDataBounds) 
     Loop 
    End Sub 

    'String to byte string conversion 
    Private Function CByteString(sString) 
     Dim nIndex 
     For nIndex = 1 to Len(sString) 
      CByteString = CByteString & ChrB(AscB(Mid(sString,nIndex,1))) 
     Next 
    End Function 

    'Byte string to string conversion 
    Private Function CWideString(bsString) 
     Dim nIndex 
     CWideString ="" 
     For nIndex = 1 to LenB(bsString) 
      CWideString = CWideString & Chr(AscB(MidB(bsString,nIndex,1))) 
     Next 
    End Function 
End Class 

Class UploadedFile 
    Public ContentType 
    Public FileName 
    Public FileData 

    Public Property Get FileSize() 
     FileSize = LenB(FileData) 
    End Property 

    Public Sub SaveToDisk(sPath) 
     Dim oFS, oFile 
     Dim nIndex 

     If sPath = "" Or FileName = "" Then Exit Sub 
     If Mid(sPath, Len(sPath)) <> "\" Then sPath = sPath & "\" 

     Set oFS = Server.CreateObject("Scripting.FileSystemObject") 
     If Not oFS.FolderExists(sPath) Then Exit Sub 

     Set oFile = oFS.CreateTextFile(sPath & FileName, True) 

     For nIndex = 1 to LenB(FileData) 
      oFile.Write Chr(AscB(MidB(FileData,nIndex,1))) 
     Next 

     oFile.Close 
    End Sub 

    Public Sub SaveToDatabase(ByRef oField) 
     If LenB(FileData) = 0 Then Exit Sub 

     If IsObject(oField) Then 
      oField.AppendChunk FileData 
     End If 
    End Sub 

End Class 
+0

まず、これはクラシックASPである、それはASP.netとは何の関係もありません。次に、接続文字列は、Webサーバーではなく、データベース(この場合はAccess accdbファイル)に接続するために使用するものです。 Fileuploaderはあなたのスクリプトに以前含まれていたクラスファイルを参照していますか? – John

+0

良い日@ジョン。私は、Fileuploader関数を含めるために投稿を編集しました。 –

+0

Classic ASPでファイルをアップロードする場合は、2つの方法があります。 1つはPersits ASPアップロードのようなサードパーティのコンポーネントをインストールすることです。もう1つは、ADODB.Streamオブジェクトを使用することです。準備が整ったスクリプトがたくさんあります。私が常に使用しているのはFreeSpuploadです。残念ながら、それが見つかったサイトはしばらくダウンしていますが、インターネットアーカイブ(https://web.archive.org/web/20131216133943/http://www.freeaspupload.net/)で見つけることができます。また、この質問を見てください - http://stackoverflow.com/questions/12190305/how-to-upload-files-with-asp-classic – John

答えて

0

ある

任意の提案は、あなたはどのASPエラー・メッセージが表示されますか?はいの場合、どのエラーコードですか?そうでない場合は、エラーを引き起こすために無効なファイルパスを試してください(ファイルパスが問題であるかどうかを調べるには)。このライン私の知る限り

Set FileSys = CreateObject("Scripting.FileSystemObject") 

Set FileSys = Server.CreateObject("Scripting.FileSystemObject") 

エラーの別の可能なソースでなければなりません:あなたはファイルパスのフォルダが適切な書き込み権限を持っているかどうかを チェックしましたか?参照IIS 7.5(=ウィンサーバー2008R2)に書き込み権限を設定する方法について:

How do I give ASP.NET permission to write to a folder in Windows 7?

+0

お返事ありがとうございました。フォルダに正しい権限があります。エラーコードはありませんでした。関数は成功したが、ファイルは表示されていないと言った。私はあなたが言ったことを試してみるつもりです。それはあなたがそれを書いてくれるファイルパスを書いていたのです –