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


Uppladdningsscript skapar filnamn men innehållet laddas inte upp

Postades av 2002-10-02 21:14:22 - Fredrik Henrysson, i forum asp - allmänt, Tråden har 2 Kommentarer och lästs av 425 personer

Hej.

Jag har läst Pelles artikel om att ladda upp bilder på servern.
Allt fungerar som jag vill förutom att filen som skapats inte har något innehåll (filstorlek 1kb).

Databasen däremot fylls på med användare, filnamn och beskrivning precis som jag vill ha det

Vad har jag missat?

//Fredrik


<code>
<%
' 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), "\")
filename = Mid(myRequestFiles(0, 2), sPos + 1)
End If

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


' hämtar filextension
extension = right(filename,4)

allowlist = ".gif,.jpg"

if instr(allowlist, extension) then

set conn = Server.CreateObject("ADODB.Connection")
conn.open "holsby"

set rst=conn.execute("select max(id) as recordid from Uppladdade_bilder")
returnedId = rst("recordid") + 1
rst.close

' bygger det nya filnamnet. Eftersom det exempelvis kan stå 48, så vill vi istället
' att det skall stå 00048 och det kan man göra på följande sätt:
filename = Right("00000" & trim(returnedId), 5)

' bygger ihop det nya filnamnet
newfilename = filename & extension

Select Case lcase(right(newfilename, 4))
case ".gif"
SavePath = "c:\hemsidor\holsby\uppladdat\bilder\gif\" & newfilename
case ".jpg"
SavePath = "c:\hemsidor\holsby\uppladdat\bilder\jpg\" & newfilename
End Select

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

' 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(filename)

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

' eftersom request.form inte fungerar får du använda:
' myRequest("fältnamn")

Anv = "Fredrik"
Beskr = "Beskr"
SQL = "Insert into Uppladdade_bilder (Anvandare, Bildsokvag, Beskrivning) values('" & Anv & "','" & newfilename & "','" & Beskr & "')"
Conn.Execute sql

conn.close
Set conn = Nothing

else
Response.Write "Du får inte skicka upp filen med det filformatet<br>"
Response.Write "Endast " & allowlist & " är godkända. Klicka på bakåtknappen i webläsaren och försök igen."
Response.End
end if


%>
</code>


Svara

Sv: Uppladdningsscript skapar filnamn men innehållet laddas inte

Postades av 2002-10-02 21:21:21 - Andreas Hillqvist

Du sparar ju bar filnamnet i filen. Använder du ingen upload komponent?


Svara

Sv: Uppladdningsscript skapar filnamn men innehållet laddas inte

Postades av 2002-10-02 21:25:31 - Fredrik Henrysson

Så här ser hela scriptet ut:

Hur skapar jag uploadkomponenten? Finns det något exempel? jag har letat lite men inte hittat något.

//Fredrik

Här är koden för formuläret:

<code>
<html>
<head><title>Ladda upp filer med ASP</title></head>

<body>

<form action="upload.asp" enctype="multipart/form-data" method="post" name="f" id="f">

Välj en fil att ladda upp:<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>

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


Uppladdningsskriptet i sin helhet:

<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

' vad valde användaren att använda för filnamn?

' 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), "\")
filename = Mid(myRequestFiles(0, 2), sPos + 1)
End If

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


' hämtar filextension
extension = right(filename,4)

allowlist = ".gif,.jpg"

if instr(allowlist, extension) then

set conn = Server.CreateObject("ADODB.Connection")
conn.open "holsby"

set rst=conn.execute("select max(id) as recordid from Uppladdade_bilder")
returnedId = rst("recordid") + 1
rst.close

' bygger det nya filnamnet. Eftersom det exempelvis kan stå 48, så vill vi istället
' att det skall stå 00048 och det kan man göra på följande sätt:
filename = Right("00000" & trim(returnedId), 5)

' bygger ihop det nya filnamnet
newfilename = filename & extension

Select Case lcase(right(newfilename, 4))
case ".gif"
SavePath = "c:\hemsidor\holsby\uppladdat\bilder\gif\" & newfilename
case ".jpg"
SavePath = "c:\hemsidor\holsby\uppladdat\bilder\jpg\" & newfilename
End Select

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

' 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(filename)

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

' eftersom request.form inte fungerar får du använda:
' myRequest("fältnamn")

Anv = "Fredrik"
Beskr = "Beskr"
SQL = "Insert into Uppladdade_bilder (Anvandare, Bildsokvag, Beskrivning) values('" & Anv & "','" & newfilename & "','" & Beskr & "')"
Conn.Execute sql

conn.close
Set conn = Nothing

else
Response.Write "Du får inte skicka upp filen med det filformatet<br>"
Response.Write "Endast " & allowlist & " är godkända. Klicka på bakåtknappen i webläsaren och försök igen."
Response.End
end if


%>

</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 812
27 960
271 761
5 680
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