Avatar billede cotus Nybegynder
12. juli 2002 - 00:01 Der er 5 kommentarer og
1 løsning

Upload

Jeg har et upload system med flg. informationer:

----------upload.asp----------
<%
Sub BuildUploadRequest(RequestBin)
    'Get the boundary
    PosBeg = 1
    PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
    boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
    boundaryPos = InstrB(1,RequestBin,boundary)
    'Get all data inside the boundaries
    Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
        'Members variable of objects are put in a dictionary object
        Dim UploadControl
        Set UploadControl = CreateObject("Scripting.Dictionary")
        'Get an object name
        Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
        Pos = InstrB(Pos,RequestBin,getByteString("name="))
        PosBeg = Pos+6
        PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
        Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
        PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))
        PosBound = InstrB(PosEnd,RequestBin,boundary)
        'Test if object is of file type
        If  PosFile<>0 AND (PosFile<PosBound) Then
            'Get Filename, content-type and content of file
            PosBeg = PosFile + 10
            PosEnd =  InstrB(PosBeg,RequestBin,getByteString(chr(34)))
            FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
            'Add filename to dictionary object
            UploadControl.Add "FileName", FileName
            Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
            PosBeg = Pos+14
            PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
            'Add content-type to dictionary object
            ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
            UploadControl.Add "ContentType",ContentType
            'Get content of object
            PosBeg = PosEnd+4
            PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
            Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
            Else
            'Get content of object
            Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
            PosBeg = Pos+4
            PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
            Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
        End If
        'Add content to dictionary object
    UploadControl.Add "Value" , Value   
        'Add dictionary object to main dictionary
    UploadRequest.Add name, UploadControl   
        'Loop to next object
        BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
    Loop

End Sub

'String to byte string conversion
Function getByteString(StringStr)
For i = 1 to Len(StringStr)
    char = Mid(StringStr,i,1)
    getByteString = getByteString & chrB(AscB(char))
Next
End Function

'Byte string to string conversion
Function getString(StringBin)
getString =""
For intCount = 1 to LenB(StringBin)
    getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
Next
End Function
%>
------------------------------
----------uploadfile.asp------
<form METHOD="Post" ENCTYPE="multipart/form-data" ACTION="outputFile.asp" id="form3" name="form3">
<input TYPE="file" NAME="blob"><br>
<input TYPE="submit" value="Upload" NAME="Enter">
------------------------------
----------outputfile.asp------
<%
Response.Expires=0
Response.Buffer = TRUE
Response.Clear
byteCount = Request.TotalBytes
RequestBin = Request.BinaryRead(byteCount)
Dim UploadRequest
Set UploadRequest = CreateObject("Scripting.Dictionary")
BuildUploadRequest(RequestBin)
contentType = UploadRequest.Item("blob").Item("ContentType")
filepathname = UploadRequest.Item("blob").Item("FileName")
filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
value = UploadRequest.Item("blob").Item("Value")
Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
'pathEnd = Len(Server.mappath(Request.ServerVariables("PATH_INFO")))-14
'Response.Write (Request.ServerVariables("PATH_INFO"))
Set MyFile = ScriptObject.CreateTextFile(Server.mappath(""&filename))
For i = 1 to LenB(value)
    MyFile.Write chr(AscB(MidB(value,i,1)))
Next
MyFile.Close    %>

<!--#include file="upload.asp"-->
------------------------------


Jeg vil gerne have, at man KUN kan uploade *.txt-filer - desuden skal filerne ikke uploades til egen mappe som nu er:

/mode/bruger/lister/

men den skal uploades til:

/mode/bruger/lister/brugernavn/

/cotus
Avatar billede dk_akj Nybegynder
12. juli 2002 - 07:45 #1
Hvad angår filplaceringen så opretttes den her:

Set MyFile = ScriptObject.CreateTextFile(Server.mappath(""&filename))
prøv at ændre det til
Set MyFile = ScriptObject.CreateTextFile(Server.mappath(""&filename) & "\" & myuser) ' hvor my user er en variabel der indeholder et brugernavn.

//akj
Avatar billede dk_akj Nybegynder
12. juli 2002 - 08:21 #2
sludder, jeg mente :
Set MyFile = ScriptObject.CreateTextFile(Server.mappath( myuser & "\" &  myuser)

Og for kun at gemme på serveren hvis det er en txt.
if right(filename,4) <> ".txt" then
  For i = 1 to LenB(value)
      MyFile.Write chr(AscB(MidB(value,i,1)))
  Next
else
  response.write "Kun .txt filer er tilladt
  MyFile.Close
end if
Avatar billede dk_akj Nybegynder
12. juli 2002 - 08:22 #3
NEEEEJ - hvad er det jeg laver ??

Set MyFile = ScriptObject.CreateTextFile(Server.mappath( myuser & "\" &  filename)

Og for kun at gemme på serveren hvis det er en txt.
if right(filename,4) <> ".txt" then
  For i = 1 to LenB(value)
      MyFile.Write chr(AscB(MidB(value,i,1)))
  Next
else
  response.write "Kun .txt filer er tilladt
  MyFile.Close
end if
Avatar billede cotus Nybegynder
12. juli 2002 - 11:42 #4
Hvordan beder jeg serveren om, at oprette en mappe for hver bruger? Eller dvs., at når jeg beder den om at gemme i session("mode") & "\" &  filename, så skriver den:

Microsoft VBScript runtime error '800a004c'
Path not found
/mode/bruger/lister/outputFile.asp, line 18

Hvordan beder jeg den om at oprette en mappe?

/cotus
Avatar billede cotus Nybegynder
12. juli 2002 - 11:48 #5
Du kan også bare fortælle, hvordan jeg opretter en ny mappe, i den fil, hvor jeg gemmer de nye brugere!!!

Hvordan udskriver jeg ALLE filer, fra en mappe, i en liste?
Avatar billede dk_akj Nybegynder
12. juli 2002 - 13:15 #6
opret en folder:
Set fldr = ScriptObject.CreateFolder(foldernavn)

at udskrive en filliste er noget ala det her;
Set objFSO=CreateObject("Scripting.FileSystemObject")
Set folder= objFSO.GetFolder("folderens navn")

for each f in folder.subFolder
Response.Write f.name & "<br>"
Next

Skal afsted på ferie nu så skal du have yderligere hjælp må du henvende dig til andre.

//akj
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester