Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Hämta endast filnamnet

Postades av 2003-02-24 19:29:24 - Göran Hansson, i forum asp - allmänt, Tråden har 0 Kommentarer och lästs av 408 personer

Via sida1.asp och sida2.asp skickar jag filer till en speciell mapp!
Nu vill jag bara skicka filnamnet till sida2.asp och fånga filnamnet i en session (fName)!
Vilken kod i sida2.asp ska plockas bort för att endast filnamnet ska skickas, eller går det att göras enklare?

sida1.asp:

<code>
<html>
<form action="sida2.asp" enctype="multipart/form-data" method="post" name="f" id="f">
Välj en fil:<br>
<input type="file" name="test" size="50"><br>
<input type="radio" name="filename" value="original" checked>
Använd originalnamnet
<br>
<input type="radio" name="filename" value="userSpecified">
Använd följande namn:
<input type="text" name="userSpecifiedName" value="">
<br>
<input type="submit" value="skicka filen">
</form>
</html>
</code>

sida2.asp:

<code>
<%
' Justera tiden beroende på hur stora filer du kommer tillåta att skicka
Server.ScriptTimeout = 5400

Const ForWriting = 2
Const TristateTrue = -1
CrLf = Chr(13) & Chr(10)

'Denna funktion hämtar ett fälts namn
Function GetFieldName(infoStr)

sPos = InStr(infoStr, "name=")
EndPos = InStr(sPos + 6, infoStr, Chr(34) & ";")

If EndPos = 0 Then
EndPos = inStr(sPos + 6, infoStr, Chr(34))
End If

GetFieldName = Mid(infoStr, sPos + 6, endPos - (sPos + 6))

End Function

'Denna funktion hämtar fältets värde i filnamn
Function GetFileName(infoStr)

sPos = InStr(infoStr, "filename=")
EndPos = InStr(infoStr, Chr(34) & CrLf)
GetFileName = Mid(infoStr, sPos + 10, EndPos - (sPos + 10))

End Function

' Denna funktion hämtar ett filens MIMEtyp
Function GetFileType(infoStr)

sPos = InStr(infoStr, "Content-Type: ")
GetFileType = Mid(infoStr, sPos + 14)

End Function

PostData = ""
' Hämtar hela headern som postats genom att hämta headerns storlek med dess data
Dim biData
biData = Request.BinaryRead(Request.TotalBytes)

' Tänk nu på att det är binär data så vi måste ändra detta till
' någonting som är hanterbart och läsbart.
For nIndex = 1 to LenB(biData)
PostData = PostData & Chr(AscB(MidB(biData,nIndex,1)))
Next

' När du använt BinaryRead så kan du inte använda Request-objektet. Därför måste vi
' hantera alla request-variablerna själva genom att hämta ut detta
ContentType = Request.ServerVariables( "HTTP_CONTENT_TYPE")

' delar upp datat
ctArray = Split(ContentType, ";")

' En fil som postas fungerar endast om du i formen satt "multipart/form-data"
' - så vi kontrollerar att det är gjort
If Trim(ctArray(0)) = "multipart/form-data" Then
ErrMsg = ""

' Hämta all data om formen
bArray = Split(Trim(ctArray(1)), "=")
Boundary = Trim(bArray(1))

' Splitta upp all denna indata
FormData = Split(PostData, Boundary)

' Dela upp informationen för varje variabel och data
Dim myRequest, myRequestFiles(9, 3)
Set myRequest = CreateObject("Scripting.Dictionary")
FileCount = 0

' För varje fält som finns i den postade formen
For x = 0 to UBound(FormData)

' Två CrLf markerar slutet på informationen om ett fält. Allt efter
' det är ett värde
InfoEnd = InStr(FormData(x), CrLf & CrLf)
If InfoEnd > 0 Then

' Hämtar informationen för aktuellt fält utom skräptecken i slutet på strängen
varInfo = Mid(FormData(x), 3, InfoEnd - 3)

' Hämtar värdet på fältet, vi tar bort CrLf både i början och i slitet
varValue = Mid(FormData(x), InfoEnd + 4,Len(FormData(x)) - InfoEnd - 7)

' Är detta filen eller fältet
If (InStr(varInfo, "filename=") > 0) Then

' placera vår fil i en stor array.

' Om du vill ladda upp flera filer på en gång så visas här hur du
' kan göra, men formen du postade från tillåter bara en så då får
' du göra om den så fler filen kan postas.

myRequestFiles(FileCount, 0) = GetFieldName(varInfo)
myRequestFiles(FileCount, 1) = varValue
myRequestFiles(FileCount, 2) = GetFileName(varInfo)
myRequestFiles(FileCount, 3) = GetFileType(varInfo)
FileCount = FileCount + 1

Else
' Detta är ett vanligt fält
myRequest.add GetFieldName(varInfo), varValue

End If
End If
Next

Else
ErrMsg = "Du har fel encoding typ!"
End If

' Om du tillåter mer filer än 1, gör om detta till en loop

' instansierar File ScriptingSystem (FSO)
Set lf = server.createObject("Scripting.FileSystemObject")

' vad valde användaren att använda för filnamn?
If myRequest("filename") = "original" Then

' Vad är det för klient som skickar filen, Machintosh skickar endast filnamnet
' medan Windows även skickar med sökvägen till filen.
BrowserType = UCase(Request.ServerVariables("HTTP_USER_AGENT"))

If (InStr(BrowserType, "WIN") > 0) Then
' Det är Windows med sökväg i
sPos = InStrRev(myRequestFiles(0, 2), "\")
fName = Mid(myRequestFiles(0, 2), sPos + 1)
End If

If (InStr(BrowserType, "MAC") > 0) Then
' Det är mac, endast filnamnet skickas
fName = myRequestFiles(0, 2)
End If

' här skapar du filnamnet som vi skall använda
FilePath = "./" & fName
Else
' använd det filnamn som användaren skrev istället
' Om användaren valt att spara med ett eget filnamn,
' då tar vi det istället.
FilePath = "./" & myRequest("userSpecifiedName")
End If

' anger sökvägen dit filen skall sparas
SavePath = Server.MapPath(FilePath)

' skapar objektet för att kunna spara en fil, finns den så skriver vi över den
Set SaveFile = lf.CreateTextFile(SavePath, True)

' Skriver filen (arrayen) till disk
SaveFile.Write(myRequestFiles(0, 1))

' stänger och frigör objektet
SaveFile.Close
%>

<html>
<body>
<% If ErrMsg = "" Then %>
Du valde filen: <br>
<% Response.Write fName %>
<% Else %>
<%= ErrMsg %>
<% End If %>

</body>
</html>
</code>


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 808
27 960
271 761
791
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies