tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
6
ZUGRIFFE
1511
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von nafets
    nafets nafets ist offline Mitglied Silber
    Registriert seit
    Feb 2004
    Beiträge
    99
    Hallo

    Versuche ein Upload Tool einzurichten. Mein Hoster benützt Persits ASP Uploader, habe mir dazu auch die Anleitung auf Persits angeschaut. Die Files funktionieren soweit auch, aber der eigentliche Upload funktioniert irgendwie nicht richtig. Wie muss ich das Zielverzeichnis angeben ?

    Im Muster File steht: Count = Upload.Save("c:\upload")
    Wenn ich das einfach so stehen lasse, bekomme ich die Meldung dass der Upload erfolgreich war, aber natürlich ist das File nicht in meine Webroot vorhanden. Habe auch schon versucht nur den Ordner ohne Laufwerk einzufügen aber das klappt alles nicht. Das File taucht auf dem Server nicht auf. Bin nach etwas Googlen auf den Begriff Server.MapPath gestossen aber da kommt auch eine Fehlermeldung. Weiss jemand wie ich das einrichten muss?

    Gruss
     

  2. #2
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    Hallo

    ich kenne mich mit der aspupload-Komponenten leider nicht aus. Wenn im Manual nichts über eine rel. Pfad steht, dann musst Du einfach mal durchtesten. Mit Sicherheit gibt es da eine Möglichkeit beschreiben. Ob Du mit dem Server.Mappath() weiterkommst, wage ich bei diesen Komponenten zu bezweifeln, denn die Pfadverarbeitung ist wohl in der Komponenten mit verarbeitet.

    Bei der ASPsmartupload-Komponente kann man die Pfade so anlegen.

    Ersteres Beispiel würde mir jetzt das File in ein 2 Ordner tieferes Verzeichnis im Root des Servers laden.

    Das 2. Beispiel beschreibt auch den physikalischen Pfad.

    intCount = mySmartUpload.Save("/aspSmartUpload/Upload")
    ' sample with a physical path
    ' intCount = mySmartUpload.Save("c:\temp\")

    Allerdings sind dort beide Möglichkeiten in den samples angegeben.

    Wenn man wirklich im Manual nichts dergleichen beschrieben findet und es echt nicht funktionieren will, würde ich mich an den Support wenden. Naja, oder jemand hier arbeitet mit der Komponenten und kann Dir helfen.
    Geändert von Luzie (27.12.04 um 15:06 Uhr)
     
    liebe Grüße, die Luzie

  3. #3
    Avatar von nafets
    nafets nafets ist offline Mitglied Silber
    Registriert seit
    Feb 2004
    Beiträge
    99
    Also,
    Die Anleitung stimmt, ausprobieren muss man trotzdem ich muss jetzt das Laufwerk angeben. d:\wwwroot\meineSeite\upload dann funktioniert es UND man muss SCHREIBRECHTE haben ! Da kann ich ja noch lange üben .... egal.

    Aber jetzt habe ich noch ein anderes Problem. Wie kann ich die Files im Ordner eindeutig kennzeichnen? Habe schon versucht eine eindeutige Auftragsnummer vor das File zu klemmen aber ich kriege das nicht hin. Das komische ist das das Upload File die Formwerte nicht in klassischer Weise entgegennimmt und dann verarbeitet, aber das liegt wahrscheindlich an der Kompnente dass die begreift dass sie alles was vom Formtyp file kriegt speichern muss.

    Also das Speichern sieht bei Persits so aus:

    Count = Upload.Save("d:\wwwroot\meineSeite\upload\")

    Wo oder wie klemme ich da jetzt noch meinen Wert dazwischen habs schon so probiert:

    Count = Upload.Save("d:\wwwroot\meineSeite\upload\"" & myANR & "")

    Aber das geht nicht. Habs auch schon umgebaut etc. und dem Formular mitgeben hab ich nicht geschnallt. Da der type="file" ja kein value hat was man frisieren könnte.

    Weiss da jemand Bescheid ?
     

  4. #4
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    Wie und ob das nu beim aspupload funktioniert, dass kann ich nicht sagen. Aber sicherlich gibts im Manual einen Punkt, wo nach Existenz des Files abgefragt wird. Dies sind meist die Stellen, die man für solche Änderungen nutzen kann. Bei SoftArtisans und auch bei ASPsmartupload existieren diese Abfragen direkt in der Komponente und sind Teil des Objektes. Bei SA wird eine laufende Nummer vor den Dateinamen gesetzt. Dies wird durch u.g. Programmierung realisiert.

    bsp. SA
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    
        '--- Save the file now. If you want to preserve the original user's filename, use
        '---
        Dim aa, Dateiname,dat_temp, dat_ext, temp2,jj
        aa=split(upl.userfilename,"\")
        Set oFM = Server.CreateObject("SoftArtisans.FileManager")
        If oFM.FileExists(upl.path &"\" & aa(ubound(aa))) Then
         dat_temp=left(aa(ubound(aa)),len(aa(ubound(aa)))-4)
         dat_ext=right(aa(ubound(aa)),4)
         jj=0
        
         do ' Zahl hinten anhängen
          jj=jj+1
          temp2=dat_temp & "_" & jj & dat_ext 
        
         Loop while oFM.FileExists(upl.path &"\" & temp2)
         Dateiname=temp2
     
         upl.Form("FILE1").SaveAs Dateiname 'wichtigste Funktion
         textout=textout & "- Datei " & aa(ubound(aa)) &" unter " & Dateiname & " gespeichert<br>"
        else
         upl.Form("FILE1").Save
         Dateiname=aa(ubound(aa))
         textout=textout & "- Datei " & Dateiname &" gespeichert<br>"
        end if

    Bei ASPsmartupload gibts auch ein Sample, wo die Existenz des Files abgefragt wird und wo man file.filename durch einen eigenen Namen ersetzen.

    Aber es ist wichtig, dass man zuerst einmal den filenamen splittet oder sich der Properties bedient, die die Komponente noch bietet, um auch das korrekte Format zu speichern. Das sind einfach die Stellen, die man in den jeweiligen Scripten suchen und nutzen kann. Diese MÜSSTEN bei kostenpflichtigen Komponenten einfach vorhanden sein.

    Code :
    1
    2
    3
    4
    5
    6
    
        If not file.IsMissing Then
              '  Save the files with his original names in a virtual path of the web server
              '  ****************************************************************************
                 file.SaveAs("/aspSmartUpload/Upload/" & file.FileName)
                 ' sample with a physical path 
             ' file.SaveAs("c:\temp\" & file.FileName)

    Hat jetzt zwar unmittelbar nichts mit Deinem Problem zu tun, aber ich häng Dir nochmal ein Script an, wo man eine Textdatei mit lfd. Nummer erzeugen kann. Entspr. angepasst kann u.U. für solche Aktionen ganz hilfreich sein.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    
      <%@LANGUAGE="VBSCRIPT"%>
      <% option explicit %>
      <% 'Response.buffer = true %>
      <html>
      <head>
          <title>neue Textdatei erzeugen</title>
         
      </head>
      <body>
      <form name="form1" method="post" action="<% = Request.Servervariables("script_name")%>">
        <textarea name="kommentar" cols="50" rows="10" style="border:1px dotted black"></textarea>
        <br>
        <input type="submit" name="go" value="go">
      </form>
      <% 
      
      if Request("Kommentar") <> "" then
      
      dim myPath, path, FolderObject, ListFolder, sAlleDateien
      path = "textdateien" 
      myPath = Server.MapPath(path) 
      Set FolderObject = CreateObject("scripting.FilesystemObject") 
      set ListFolder = FolderObject.GetFolder(myPath) 
      Set sAlleDateien = ListFolder.Files
      
      ' --- Anzahl der im Verzeichnis befindlichen Dateien
      
      dim AnzahlDateien
      AnzahlDateien = sAlleDateien.Count
      
      ' --- Wenn noch keine Datei vorhanden
      
      Dim neuerName
      if anzahlDateien = 0 Then
      neuerName= "00001.txt"
      
      ' --- ansonsten immer um 1 hochzählen der zuletzt eingefügten Datei
      
      dim x, n, f
      else
      x=0
      For each f in listFolder.files 
      n = cint(left(f.name,5))
      if n>x then x = n
      neuerName = right("0000" & (x+1),5) & ".txt"
      next 
      end if
      
      Response.write "Anzahl der vorhandenen Dateien: " & AnzahlDateien & "<br>"
      Dim objTextStream
      Set objTextStream = FolderObject.CreateTextFile _
                                  ( _
                                  Server.MapPath ("textdateien/" & neuerName & "" ))
      ' --- Einfügen des Textes
      
      Dim strFileContent
          strFileContent = Replace(Request("Kommentar"),vbcrlf,"<br>")
          objTextStream.Write strFileContent
          Response.Write "<br>Die Datei " & neuerName & " wurde erzeugt <br>und beinhaltet folgenden Text:<br><br>"
        objTextStream.Close
      
      set sAlleDateien = nothing
      Set objTextStream = Nothing
      Set FolderObject    = Nothing 
      Server.Execute "Textdateien/" & neuerName
      end if
      %>
      </body>
    </html>
    %>
     
    liebe Grüße, die Luzie

  5. #5
    Avatar von nafets
    nafets nafets ist offline Mitglied Silber
    Registriert seit
    Feb 2004
    Beiträge
    99
    Hey Luzie

    Danke für die umfangreiche Antwort. Hab alles ausprobiert aber bin leider noch nicht weiter. Habe einen Teil des Problems gelöst.

    Die "billige" Lösung wäre Upload.OverwriteFiles auf False zu setzten. Dann fügt die Komponente automatisch Zahlen hinzu. Funktioniert grundsätzlich aber ich muss das File überspeichern bzw. updaten können. Man könnte es so lösen aber dann habe ich das Problem, dass ich ein riesen Filehaufen habe und nicht weiss welche Files noch verwendet werden und welche einfach nur Platz brauchen.

    Hat irgendjemand Erfahrung mit dem PERSITS ASP Upload für normales ASP und nicht .net Ich komme da einfacht nicht weiter -- voll frustrierend.

    Zudem kann man ja im Form keine Werte mer übergeben. Habe jetzt meinen eindeutigen Wert via Session übertragen. Aber auch so kann ich den Inhalt dem Dateinamen nicht anfügen. Es will einfach nichts klappen. Das letzte was ich hoffte zu funktioneren war:

    Code :
    1
    
    Set File = Upload.Files("FILE1" & Session("upload") & "")

    Aber das klappt auch nicht!

    HIIILLLLFFFEEE
     

  6. #6
    Registriert seit
    Aug 2003
    Ort
    Arnsberg, Germany, Germany
    Beiträge
    1.066
    Morgen,

    noch kurz ein Tipp

    Du könntest Dir den Filenamen in eine Datenbank speichern und die Werte mit dem Inhalt Deines Folders, wo die Images liegen vergleichen und diejenigen, die keine Datenbankzuordnung haben, dann löschen.

    Naja, aber vielleicht hat noch ja jemand anderes Erfahrungen mit ASPupload.
     
    liebe Grüße, die Luzie

  7. #7
    Avatar von nafets
    nafets nafets ist offline Mitglied Silber
    Registriert seit
    Feb 2004
    Beiträge
    99
    So habs jetzt hingekriegt. Man mit der Persits Komponente bei uploadden keine Files umbenennen aber man kann diese in derselben Schlaufe kopieren, umbenennden und das Original löschen. Das sieht dann so aus:

    Code :
    1
    2
    
    File.Copy("c:\meineSeite\upload/" & myName & File.Ext)
        File.Delete

    So wird das File von z.B. agb.doc mit meiner Variable myName ergänzt und sieht dann so aus: 1234agb.doc.

    Wie Ihr wollt. Aber ich danke der Luzie für Ihre Inputs

    see ya
     

Ähnliche Themen

  1. Upload Script - JPG KEIN Upload möglich
    Von Radanua im Forum PHP
    Antworten: 12
    Letzter Beitrag: 12.09.10, 21:32
  2. Antworten: 0
    Letzter Beitrag: 20.09.06, 16:24
  3. upload über upload.aspx
    Von NightPain im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 25.07.06, 18:19
  4. Upload mit .zip
    Von Dönerman im Forum PHP
    Antworten: 14
    Letzter Beitrag: 02.09.05, 13:24
  5. upload via SSH ?
    Von blubber im Forum Hosting & Webserver
    Antworten: 7
    Letzter Beitrag: 01.04.03, 01:06