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


SNÄLLA! : Ladda upp fil till access-databas utan mellan lagring p

Postades av 2003-02-02 20:17:31 - Magnus Karlsson, i forum asp - allmänt, Tråden har 12 Kommentarer och lästs av 540 personer

Håller på att labba med Pelles filuppladdning utan komponent som kan hittas under "kurser & artiklar". Jag vill spara uppladdad fil direkt i en access databas i stället som Pelle till hdd. Som jag kan förstå så ligger binärdatat i arrayen "(myRequestFiles(0, 1))" men hur skall jag göra för att få in den i min accessdatabas ?

Nedan följer en liten kodsnutt som jag försöker få igång:


Dim objConn, objRS, Sql
Const adOpenKeyset = 1, adLockOptimistic = 3


grpDsn = "Provider=Microsoft.Jet.OLEDB.4.0;" &_
"Data Source=c:\dogge.mdb;" &_
"Persist Security Info=False"

Set objConn = Server.CreateObject("ADODB.connection")
Set objRS = Server.CreateObject("ADODB.Recordset")
objConn.ConnectionString = grpDsn
objConn.Open

Sql = "Select * from files ;"

objRS.Open Sql, objConn, adOpenKeyset, adLockOptimistic

Set Stream = Server.CreateObject("ADODB.Stream")
Stream.Type = 1
Stream.Open
Stream.Write (myRequestFiles(0, 1))

objRS.AddNew
objRS("filedata").AppendChunk Stream.Read
objRS.Update


Detta är Pelles kod snutt som jag vill byta ut:
' 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
%>







Svara

Sv: Ladda upp fil till en access-databas som är placerad på

Postades av 2003-02-02 21:24:52 - Andreas Hillqvist

Varför använder du en stream?
<code>
Dim objConn, objRS, Sql
Const adOpenKeyset = 1, adLockOptimistic = 3

grpDsn = "Provider=Microsoft.Jet.OLEDB.4.0;" &_
"Data Source=c:\dogge.mdb;" &_
"Persist Security Info=False"

Set objConn = Server.CreateObject("ADODB.connection")
objConn.Open grpDsn

Sql = "Select * from files ;"

Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open Sql, objConn, adOpenKeyset, adLockOptimistic

objRS.AddNew
objRS("filedata").AppendChunk myRequestFiles(0, 1)
objRS.Update

objRS.Close
Set objRS = Nothing

objConn.Close
Set objConn = Nothing
</code>


Svara

Sv: Ladda upp fil till en access-databas som är placerad på

Postades av 2003-02-02 21:28:00 - Magnus Karlsson

Har testat som du anger ovan, men det vill inte fungera. Det blir fel meddelande!

Jag vill inte mellanlagra filerna på serverns hårddisk. Jag förmodar att man kan undvika att utsätta servern för virus om man inte mellan lagrar uppladdade filer på hårddisken.



Svara

Sv: Ladda upp fil till en access-databas som är placerad på

Postades av 2003-02-02 22:12:33 - Johan Djupmarker

<b>Jag förmodar att man kan undvika att utsätta servern för virus om man inte mellan lagrar uppladdade filer på hårddisken. </b>

Nej, så länge filen inte exekveras är det ingen fara. Du kan alltså lägga in alla världens virus på en hårddisk utan att något händer, det viktiga är att filerna inte exekveras.

/Johan


Svara

Sv: Ladda upp fil till en access-databas som är placerad på

Postades av 2003-02-02 22:42:26 - Andreas Hillqvist

Vad får du för felmeddelande?


Svara

Sv: Ladda upp fil till en access-databas som är placerad på

Postades av 2003-02-03 07:39:12 - Magnus Karlsson

Det jag gjort är att modifiera Pelles "Upload.asp" och bytt ut den del som sparar på hdd mot en del som stoppar in filen i en db istället. Att mellanlagra på hdd först och sedan in i db går bra. Men jag vill inte öppna servern för hack-försök! Visst är det så att virus måste startas för att sätta igång sitt jobb. Men om "Hackaren" skickar upp ett asp-script och virus så är det ju problemet ett faktum. Men om man pytsar in allt uppladdat i en db så blir detta fenomen ett problem för "Hackaren". Eller ??

Felmeddelandet är att "Upload.asp" inte vill köras.

Detta är felet:
objRS.AddNew
objRS("filedata").AppendChunk myRequestFiles(0, 1)
objRS.Update


Websidan visar "Sidan kan inte visas" - "HTTP 500 - Internt serverfel
Internet Explorer "



Svara

Sv: Ladda upp fil till en access-databas som är placerad på

Postades av 2003-02-03 08:51:43 - Magnus Karlsson

En annan grej jag stött på med Pelles Upload utan komponent är att det inte går att skicka för stora filer. Filer större än 20Kb kör bort sig helt.


Svara

Sv: Ladda upp fil till en access-databas som är placerad på

Postades av 2003-02-03 12:11:36 - Magnus Karlsson

BITTE, HILFE !

Detta är min kod som fungerar om jag mellanlagrar på hårddisken:

<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



Dim objConn, objRS, Sql
Const adOpenKeyset = 1, adLockOptimistic = 3


grpDsn = "Provider=Microsoft.Jet.OLEDB.4.0;" &_
"Data Source=c:\dogge.mdb;Mode=ReadWrite;" &_
"Persist Security Info=False"

Set objConn = Server.CreateObject("ADODB.connection")
Set objRS = Server.CreateObject("ADODB.Recordset")
objConn.ConnectionString = grpDsn
objConn.Open

Sql = "Select * from files ;"

objRS.Open Sql, objConn, adOpenKeyset, adLockOptimistic

Set Stream = Server.CreateObject("ADODB.Stream")
Stream.Type = 1
Stream.Open
Stream.LoadFromFile SavePath

objRS.AddNew
objRS("filename") = FilePath
objRS("filedata") = Stream.Read
objRS.Update


objRS.Close
Set objRS = Nothing

objConn.Close
Set objConn = Nothing


'Dim fsod
'Set fsod = Server.CreateObject("Scripting.FileSystemObject")
'fsod.DeleteFile(SavePath, True)


%>
</code>

<code>
<html>
<body>
<% If ErrMsg = "" Then %>
Tack för din fil, den har nu laddats upp!
<% Else %>
<%= ErrMsg %>
<% End If %>

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


Svara

Sv: HJÄLP! : Ladda upp fil till en access-databas som är pla

Postades av 2003-02-04 14:44:12 - Magnus Karlsson

Någon som vet .... ?


Svara

Sv: HJÄLP! : Ladda upp fil till en access-databas som är pla

Postades av 2003-02-04 22:27:10 - Magnus Karlsson

Är det ingen som vill hjälpa mig ur mitt lidande ?


Svara

Sv: HJÄLP! : Ladda upp fil till en access-databas som är pla

Postades av 2003-02-05 08:16:32 - Magnus Karlsson


Är det så att det är problem att spara en array direkt till en databas. Har letat och letat. Men hittar inte ett exempel. T.o.m. i ett ASP-Oracle exempel-kod mellanlagrar på hårddisken innan datat körs in i databasen. Men jag vill inte mellanlagra.


Svara

Sv: SNÄLLA! : Ladda upp fil till access-databas utan mellan lagri

Postades av 2003-02-06 11:05:26 - Ragnar Hedblom

Kanske du kan använda detta tips istället...

[En Uploader där du kan välja att spara till disk eller databas]

Svenne


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 809
27 960
271 761
531
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