Ergebnis 1 bis 3 von 3

Thema: [ASP] Dateiupload scheitert an verbotener Operation

  1. #1
    Rainstorm
    Gast

    Standard [ASP] Dateiupload scheitert an verbotener Operation

    Hallo, ich habe folgendes Problem:
    Wenn ich eine Datei von mehr als 300KB größe hochladen möchte, kommt der Fehlercode: "Operation not Allowed D:\INETPUB\WWWROOT\GAT\DOCS\../include/upload.asp, line 46
    Woran kann das liegen? Hier die upload.asp und der Dateiausschnitt der diese aufruft.
    (unter 300kb klappt alles !!?)


    Code:
    <%
    
    Class FileUploader
    	Public  Files
    	Private mcolFormElem
    
    	Private Sub Class_Initialize&#40;&#41;
    		Set Files = Server.CreateObject&#40;"Scripting.Dictionary"&#41;
    		Set mcolFormElem = Server.CreateObject&#40;"Scripting.Dictionary"&#41;
    	End Sub
    	
    	Private Sub Class_Terminate&#40;&#41;
    		If IsObject&#40;Files&#41; Then
    			Files.RemoveAll&#40;&#41;
    			Set Files = Nothing
    		End If
    		If IsObject&#40;mcolFormElem&#41; Then
    			mcolFormElem.RemoveAll&#40;&#41;
    			Set mcolFormElem = Nothing
    		End If
    	End Sub
    
    	Public Property Get Form&#40;sIndex&#41;
    		Form = ""
    		If mcolFormElem.Exists&#40;LCase&#40;sIndex&#41;&#41; Then Form = mcolFormElem.Item&#40;LCase&#40;sIndex&#41;&#41;
    	End Property
    
    	Public Default Sub Upload&#40;&#41;
    		Dim biData, sInputName
    		Dim nPosBegin, nPosEnd, nPos, vDataBounds, nDataBoundPos
    		Dim nPosFile, nPosBound
    '****************************************HIER IST ZEILE 46*********
    biData = Request.BinaryRead&#40;Request.TotalBytes&#41;
    '****************************************************************
    		nPosBegin = 1
    		nPosEnd = InstrB&#40;nPosBegin, biData, CByteString&#40;Chr&#40;13&#41;&#41;&#41;
    		
    		If &#40;nPosEnd-nPosBegin&#41; <= 0 Then Exit Sub
    		 
    		vDataBounds = MidB&#40;biData, nPosBegin, nPosEnd-nPosBegin&#41;
    		nDataBoundPos = InstrB&#40;1, biData, vDataBounds&#41;
    		
    		Do Until nDataBoundPos = InstrB&#40;biData, vDataBounds & CByteString&#40;"--"&#41;&#41;
    			
    			nPos = InstrB&#40;nDataBoundPos, biData, CByteString&#40;"Content-Disposition"&#41;&#41;
    			nPos = InstrB&#40;nPos, biData, CByteString&#40;"name="&#41;&#41;
    			nPosBegin = nPos + 6
    			nPosEnd = InstrB&#40;nPosBegin, biData, CByteString&#40;Chr&#40;34&#41;&#41;&#41;
    			sInputName = CWideString&#40;MidB&#40;biData, nPosBegin, nPosEnd-nPosBegin&#41;&#41;
    			nPosFile = InstrB&#40;nDataBoundPos, biData, CByteString&#40;"filename="&#41;&#41;
    			nPosBound = InstrB&#40;nPosEnd, biData, vDataBounds&#41;
    			
    			If nPosFile <> 0 And  nPosFile < nPosBound Then
    				Dim oUploadFile, sFileName
    				Set oUploadFile = New UploadedFile
    				
    				nPosBegin = nPosFile + 10
    				nPosEnd =  InstrB&#40;nPosBegin, biData, CByteString&#40;Chr&#40;34&#41;&#41;&#41;
    				sFileName = CWideString&#40;MidB&#40;biData, nPosBegin, nPosEnd-nPosBegin&#41;&#41;
    				oUploadFile.FileName = Right&#40;sFileName, Len&#40;sFileName&#41;-InStrRev&#40;sFileName, "\"&#41;&#41;
    
    				nPos = InstrB&#40;nPosEnd, biData, CByteString&#40;"Content-Type&#58;"&#41;&#41;
    				nPosBegin = nPos + 14
    				nPosEnd = InstrB&#40;nPosBegin, biData, CByteString&#40;Chr&#40;13&#41;&#41;&#41;
    				
    				oUploadFile.ContentType = CWideString&#40;MidB&#40;biData, nPosBegin, nPosEnd-nPosBegin&#41;&#41;
    				
    				nPosBegin = nPosEnd+4
    				nPosEnd = InstrB&#40;nPosBegin, biData, vDataBounds&#41; - 2
    				oUploadFile.FileData = MidB&#40;biData, nPosBegin, nPosEnd-nPosBegin&#41;
    				
    				If oUploadFile.FileSize > 0 Then Files.Add LCase&#40;sInputName&#41;, oUploadFile
    			Else
    				nPos = InstrB&#40;nPos, biData, CByteString&#40;Chr&#40;13&#41;&#41;&#41;
    				nPosBegin = nPos + 4
    				nPosEnd = InstrB&#40;nPosBegin, biData, vDataBounds&#41; - 2
    				If Not mcolFormElem.Exists&#40;LCase&#40;sInputName&#41;&#41; Then mcolFormElem.Add LCase&#40;sInputName&#41;, CWideString&#40;MidB&#40;biData, nPosBegin, nPosEnd-nPosBegin&#41;&#41;
    			End If
    
    			nDataBoundPos = InstrB&#40;nDataBoundPos + LenB&#40;vDataBounds&#41;, biData, vDataBounds&#41;
    		Loop
    	End Sub
    
    	'String to byte string conversion
    	Private Function CByteString&#40;sString&#41;
    		Dim nIndex
    		For nIndex = 1 to Len&#40;sString&#41;
    		   CByteString = CByteString & ChrB&#40;AscB&#40;Mid&#40;sString,nIndex,1&#41;&#41;&#41;
    		Next
    	End Function
    
    	'Byte string to string conversion
    	Private Function CWideString&#40;bsString&#41;
    		Dim nIndex
    		CWideString =""
    		For nIndex = 1 to LenB&#40;bsString&#41;
    		   CWideString = CWideString & Chr&#40;AscB&#40;MidB&#40;bsString,nIndex,1&#41;&#41;&#41; 
    		Next
    	End Function
    End Class
    
    Class UploadedFile
    	Public ContentType
    	Public FileName
    	Public FileData
    	
    	Public Property Get FileSize&#40;&#41;
    		FileSize = LenB&#40;FileData&#41;
    	End Property
    
    	Public Sub SaveToDisk&#40;sPath&#41;
    		Dim oFS, oFile
    		Dim nIndex
    	
    		If sPath = "" Or FileName = "" Then Exit Sub
    		If Mid&#40;sPath, Len&#40;sPath&#41;&#41; <> "\" Then sPath = sPath & "\"
    	
    		Set oFS = Server.CreateObject&#40;"Scripting.FileSystemObject"&#41;
    		If Not oFS.FolderExists&#40;sPath&#41; Then Exit Sub
    		
    		Set oFile = oFS.CreateTextFile&#40;sPath & FileName, True&#41;
    		
    		For nIndex = 1 to LenB&#40;FileData&#41;
    		    oFile.Write Chr&#40;AscB&#40;MidB&#40;FileData,nIndex,1&#41;&#41;&#41;
    		Next
    
    		oFile.Close
    	End Sub
    	
    	Public Sub SaveToDatabase&#40;ByRef oField&#41;
    		If LenB&#40;FileData&#41; = 0 Then Exit Sub
    		
    		If IsObject&#40;oField&#41; Then
    			oField.AppendChunk FileData
    		End If
    	End Sub
    
    End Class
    %>
    und hier der aufruf:

    Code:
      ' **************************
      ' Upload and save attachment
    
      if len&#40;request&#40;"detach"&#41;&#41; > 0 then
        DeleteItem Attachments, request&#40;"detach"&#41;
      end if
      
      Set FileSystem = CreateObject&#40;"Scripting.FileSystemObject"&#41;
      Set Folder = FileSystem.GetFolder&#40;Server.MapPath&#40;UploadPathWeb&#41;&#41;
      
      ' Delete old files...
      For Each File in Folder.SubFolders
        If DateDiff&#40;"d", File.DateLastAccessed, Now&#41; > 1 and strcomp&#40;File.Name, "_vti_cnf", 1&#41; <> 0 Then
          response.write "old Folders&#58; " & File.Name & "
    "
          File.Delete  
        End if
      Next
    
      TotalSize = 0
      Container = Attachments
      do while len&#40;Container&#41; > 0
        ' 0 = Name, 1 = Size, 2 = Type
        Item = split&#40;PopItem&#40;Container, 0&#41;, "|"&#41;
        TotalSize = TotalSize + int&#40;Item&#40;1&#41;&#41;
      loop
      
      Dim Uploader, File
      Set Uploader = New FileUploader
      Uploader.Upload&#40;&#41;
      If Uploader.Files.Count > 0 Then
        for Each File In Uploader.Files.Items
          if TotalSize + File.FileSize < &#40;30000000000000000000000 * 1024&#41; then
            StorePath = Server.MapPath&#40;UploadPathWeb & "/" & Session&#40;"UserId"&#41; & "/"&#41;
    
    		
            if not FileSystem.FolderExists&#40;StorePath&#41; then 
              FileSystem.CreateFolder StorePath
            end if
            if FileSystem.FileExists&#40;StorePath & File.FileName&#41; then 
              FileSystem.DeleteFile&#40;StorePath & File.FileName&#41;
            end if
              
            File.SaveToDisk StorePath
                    
            if LookForKey&#40;Attachments, File.FileName&#41; = false then
              AddItem Attachments, File.FileName, File.FileSize & "|" & File.ContentType, 2
            end if
          end if
        next
      End If
        
      Session&#40;"Attachments"&#41; = Attachments
    [/quote][/code]
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Teeny
    Registriert seit
    05.04.2007
    Beiträge
    39
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard WINDOWS VS LINUX

    Hallo Rainstorm,
    wundert mich das es überhaupt funktioniert, denn du versuchst deinem WINDOWS die Pfadangabe in LINUX-Notation beizubringen. WINDOWS verwendet "\" LINUX aber "/".

    Ersetzmal in der Zeile
    StorePath = Server.MapPath(UploadPathWeb & "/" & Session("UserId") & "/")
    die "/" mit "\"! Herzlichen Dank

    Und wie lange soll es dauern eine 30000000000000000000000 * 1024 Bit/Byte große Datei hochzuladen?
    Wozu diese Abfrage?


    Gruß
    STEPHAN

  3. #3
    Gast

    Standard

    Hey,

    dies (Pfadabfrage) war bewusst, bei der 30000000000000000000000-Abfrage hat nen kollege wohl zuviele 0-en reingebaut. Hab das Problem aber gelöst und zwar so:

    In der MetaBase-xlm des IIS-Servers gab es in Zeile 658 eine Variable "MaxRequestEntityAllowed", diese musste editiert werden!

    Scheiter derweil an einem neuen Problem. Ein 800a000d-Fehler, also ein falscher Typ welcher einer Variable zugewiesen wurde (Type mismatch)

    Dieser resultiert aus ner SQL-Abfrage.... 2 Tabellen wurden mit INNER JOIN verknüpft und da in beiden Tabellen die Spalte LastName exestiert wollte ich die eine umbenennen.

    sql = SELECT DISTINCT
    Contacts.SystemID, Contacts.Salutation, Contacts.FirstName, Contacts.LastName, Contacts.Title, Contacts.Email, Assignments.SystemID, Employees.MailAddress, Employees.FirstName AS Employees.FName, Employees.LastName AS Employees.LName

    FROM Contacts INNER JOIN (Assignments INNER JOIN Employees ON Assignments.EmployeeID = Employees.EmployeeID) ON Contacts.SystemId = Assignments.SystemID

    WHERE Contacts.Email LIKE '%@%' AND Assignments.TitleID = 9
    ORDER BY Contacts.LastName, Contacts.FirstName, Contacts.EMail

    Tjoa und da streikt er beim einlesen rs("Employees.LName") genauso wie bei rs("LName") hier ne Idee? (auch wenn ich in der SQL-Abfrage ds Employees.LName in LName umwandle

Ähnliche Themen

  1. Problem mit Dateiupload
    Von makroy im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 05.07.2008, 14:50
  2. Angst vor der "Operation"
    Von Raykonboss im Forum Off Topic und Quasselbox
    Antworten: 30
    Letzter Beitrag: 16.03.2008, 14:08
  3. Es scheitert immer an Kleinigkeiten (Seitenwechsler in PHP)
    Von Referend im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 14
    Letzter Beitrag: 08.01.2006, 14:13
  4. Dateiupload
    Von Gast im Forum HTML & CSS Forum
    Antworten: 3
    Letzter Beitrag: 02.11.2005, 21:39
  5. PHP Dateiupload
    Von gelöschter User im Forum Tutorials, Workshops und Anleitungen
    Antworten: 1
    Letzter Beitrag: 31.10.2005, 19:44

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •