/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Hvorfor uploade med en særlig komponent?
Fra : Jakob Munck


Dato : 09-03-02 10:34

Jeg undrer mig over, hvorfor nogle mennesker bruger en særlig
server-komponent (f.eks. AspSmartUpload) til at lave fil-upload til server
med, når det nu kan lade sig gøre at lave upload uden komponent
overhovedet - eller rettere sagt, ved anvendelse af de komponenter, som er
indbygget i serveren i forvejen. Upload-hastigheden er vel ikke hurtigere
fordi man bruger en særlig upload-komponent, for begrænsningen her er først
og fremmest modemhastigheden fra klient til server. Og så er der den ulemte
ved at anvende en særlig uploadkomponent - hvis man har sine filer hostet
hos en fremmed udbyder - at man skal have installeret netop denne særlige
komponent på sin egen hjemlige server for at teste hvordan koden virker.
Hvad er så argumentet for at anvende disse oploadkomponenter?

Kan nogen forklare mig, hvorfor der er mange, der anvender særlige
upload-komponenter i stedet for de komponenter der er indbygget i serveren?
Hvad er fordelen ved dette?

v.h.
Jakob Munck



 
 
Jesper Stocholm (09-03-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 09-03-02 11:04

Jakob Munck wrote in
news:3c89d56c$0$37702$edfadb0f@dspool01.news.tele.dk:

>
> Kan nogen forklare mig, hvorfor der er mange, der anvender særlige
> upload-komponenter i stedet for de komponenter der er indbygget i
> serveren? Hvad er fordelen ved dette?
>

hvad er det for nogle komponenter du tænker på, der allerede er installeret
på serveren ?

--
Jesper Stocholm
http://stocholm.dk
http://asp.stocholm.dk
Svar til gruppen og ikke til mig privat pr. email :|

Jakob Munck (09-03-2002)
Kommentar
Fra : Jakob Munck


Dato : 09-03-02 11:17

Jeg har en ganske almindelig IIS5.0-server hjemme, og jeg har ikke
installeret nogle særlige komponenter på den, ud over hvad der kommer med
default-installationen. Jeg går ud fra, at det betyder at der er et
"FileSystemObject" og sikkert også andet. Navnene husker jeg ikke.

Med dette kan jeg lave upload uden andre komponenter end dem, som er i
default-installationen. Men måske er der slet ingen !?

Det fører så tilbage til spørgsmålet om hvorfor man skal installere en
særlig komponent for at lave upload?

v.h.
Jakob Munck


-------------------------------------------------
Fungerende uploadkode til upload uden andet end IIS-installerede
komponenter, hvis der er nogle:
------------------------------------------------------

<%@ LANGUAGE="VBScript" %>
<%
'Option Explicit
Response.Expires = -1
Response.Buffer = True
Response.Clear

Dim
cdpBinaryData,cdpBoundary,cdpBoundPosition,cdpCharacter,cdpContentType,cdpCo
unt,cdpDicUploadControl,cdpDicUploadRequest,cdpEndPosition,cdpFile,cdpFileNa
me,cdpFilePath,cdpFilePosition,cdpFileSize,cdpFSO,cdpI,cdpName,cdpPosition,c
dpPositionBoundary,cdpStartPosition,cdpTotalBytes,cdpValue

cdpTotalBytes = Request.TotalBytes

' her sættes den øvre grænse for filens størrelse i bytes:
if cdpTotalBytes > 50000 then
Response.Redirect "for_stor.asp"
End if

cdpBinaryData = Request.BinaryRead(cdpTotalBytes)
Set cdpDicUploadRequest = CreateObject("Scripting.Dictionary")
cdpUploadRoutine cdpBinaryData
cdpContentType = cdpDicUploadRequest("theFile")("cdpContentType")
cdpFilePath = cdpDicUploadRequest("theFile")("cdpFileName")
cdpFileName = Right(cdpFilePath,Len(cdpFilePath)-InstrRev(cdpFilePath,"\"))

' sikrer mod upload uden valgt fil:
if cdpFileName = "" then
Response.Redirect "ingen_fil.asp"
End if

' sikrer mod upload af filer med anden endelse end .jpg:
Dim filEndelse
filEndelse = Right(cdpFileName,4)
if filEndelse <> ".jpg" then
Response.Redirect "forkert_filtype.asp"
End if

If Not cdpFileName = "" Then
cdpValue = cdpDicUploadRequest("theFile")("cdpValue")
Set cdpFSO = Server.CreateObject("Scripting.FileSystemObject")
Set cdpFile = cdpFSO.CreateTextFile(Server.mappath("uploaded/" &
cdpFileName))

For cdpI = 1 To LenB(cdpValue)
cdpFile.Write Chr(AscB(MidB(cdpValue,cdpI,1)))
Next

cdpFile.Close
Set cdpFile = Nothing

Sub cdpUploadRoutine(cdpBinaryData)
cdpStartPosition = 1
cdpEndPosition =
InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(13)))
cdpBoundary =
MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition)
cdpPositionBoundary = InstrB(1,cdpBinaryData,cdpBoundary)

Do until (cdpPositionBoundary=InstrB(cdpBinaryData,cdpBoundary &
getByteString("--")))
Set cdpDicUploadControl = CreateObject("Scripting.Dictionary")
cdpPosition =
InstrB(cdpPositionBoundary,cdpBinaryData,getByteString("Content-Disposition"
))
cdpPosition = InstrB(cdpPosition,cdpBinaryData,getByteString("name="))
cdpStartPosition = cdpPosition + 6
cdpEndPosition =
InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(34)))
cdpName =
getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPositio
n))
cdpFilePosition =
InstrB(cdpPositionBoundary,cdpBinaryData,getByteString("filename="))
cdpBoundPosition = InstrB(cdpEndPosition,cdpBinaryData,cdpBoundary)

If cdpFilePosition <> 0 And (cdpFilePosition<cdpBoundPosition) Then
cdpStartPosition = cdpFilePosition + 10
cdpEndPosition =
InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(34)))
cdpFileName =
getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPositio
n))
cdpDicUploadControl.Add "cdpFileName", cdpFileName
cdpPosition =
InstrB(cdpEndPosition,cdpBinaryData,getByteString("Content-Type:"))
cdpStartPosition = cdpPosition + 14
cdpEndPosition =
InstrB(cdpStartPosition,cdpBinaryData,getByteString(Chr(13)))
cdpContentType =
getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPositio
n))
cdpDicUploadControl.Add "cdpContentType",cdpContentType
cdpStartPosition = cdpEndPosition + 4
cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,cdpBoundary) - 2
cdpValue =
MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPosition)
Else
cdpPosition = InstrB(cdpPosition,cdpBinaryData,getByteString(Chr(13)))
cdpStartPosition = cdpPosition + 4
cdpEndPosition = InstrB(cdpStartPosition,cdpBinaryData,cdpBoundary) - 2
cdpValue =
getString(MidB(cdpBinaryData,cdpStartPosition,cdpEndPosition-cdpStartPositio
n))
End If

cdpDicUploadControl.Add "cdpValue" , cdpValue
cdpDicUploadRequest.Add cdpName, cdpDicUploadControl

cdpPositionBoundary=InstrB(cdpPositionBoundary+LenB(cdpBoundary),cdpBinaryDa
ta,cdpBoundary)
Loop
End Sub

Function getByteString(StringStr)
For cdpI = 1 To Len(StringStr)
cdpCharacter = Mid(StringStr,cdpI,1)
getByteString = getByteString & chrB(AscB(cdpCharacter))
Next
End Function

Function getString(cdpBinaryString)
getString = ""

For cdpCount = 1 To LenB(cdpBinaryString)
getString = getString & Chr(AscB(MidB(cdpBinaryString,cdpCount,1)))
Next
End Function

cdpFileSize = cdpTotalBytes / 1024
cdpFileSize = Round(cdpFileSize, 2)

'----------------------------------

Dim Conn, aa, ab, ac, ad
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver
(*.mdb)};DBQ="&Server.MapPath("upload.mdb")


aa = cdpFileName
ab = 999
ac = cdpFileSize
ad = Now()

sql_insert = "insert into filer (filNavnOrig, filNavnNyt, stoerrelse, tid)
values ('" & aa & "', '" & ab & "', '" & ac & "', '" & ad & "')"

Conn.Execute sql_insert
Conn.Close

'------------------------------------------

Response.Write("<title>The file " & cdpFileName & " was successfully
uploaded! - Size: " & cdpFileSize & "</title>")
Response.Write(cdpFileName & " Uploaded successfully! Size: " & cdpFileSize
& " kb.<br />")
End If
%>



Mark S. Rasmussen (09-03-2002)
Kommentar
Fra : Mark S. Rasmussen


Dato : 09-03-02 11:15

> Kan nogen forklare mig, hvorfor der er mange, der anvender særlige
> upload-komponenter i stedet for de komponenter der er indbygget i
serveren?
> Hvad er fordelen ved dette?

Som Jesper, hvad er det for nogle komponenter der er indbygget?

Det er rigtigt du kan lave et upload script, som vil uploade dine filer. Men
mange af disse har svært ved at f.eks klare store filer. Du kan heller ikke
lave f.eks en processbar eller noget andet grafisk. Mange af disse har også
svært ved macintosh filer pga macintosh formatet. Jeg bruger f.eks AspUpload
da det også kan give mig information om størrelser på billeder efter jeg har
uploadet det.

Der er mange flere argumenter på at bruge et upload komponent.

Mvh Mark
--
www.gameshots.dk - For seriøse gamere!



Jakob Munck (09-03-2002)
Kommentar
Fra : Jakob Munck


Dato : 09-03-02 12:11

Jeg kan også se filstørrelsen, når jeg uploader til min almindelige server
uden ekstra komponenter, men dog med dem, som var installeret fra starten.
Det er:

------------------------------
mswc.browsertypeinstalled!
mswc.nextlinkinstalled!
scripting.dictionaryinstalled!
Scripting.FileSystemObjectinstalled!

[ado]
adodb.recordsetinstalled!
adodb.connectioninstalled!
adodb.commandinstalled!
ADODB.Streaminstalled!

[indexserver]
ixsso.Queryinstalled!
ixsso.Utilinstalled!

[msdn.microsoft.com/scripting]
Wscript.Shellinstalled!

[msXML]
microsoft.XMLHTTPinstalled!
microsoft.XMLDOM
----------------------------------------------------------

Jeg kan altså stadig ikke se argumentet for at bruge en særlig
upload-komponent?

v.h.
Jakob Munck



Jesper Stocholm (09-03-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 09-03-02 13:15

Jakob Munck wrote in dk.edb.internet.webdesign.serverside.asp:
> Jeg kan også se filstørrelsen, når jeg uploader til min almindelige server
> uden ekstra komponenter, men dog med dem, som var installeret fra starten.
[snip]
>
> Jeg kan altså stadig ikke se argumentet for at bruge en særlig
> upload-komponent?
>

det vigtigste argument er vel egentlig performance. Du har inkluderet et
script på 150-200 linier ... og personligt synes jeg at scripts større eller
lig dette skriger på en komponent. Derved bliver din kode kompileret og din
performance sættes i vejret. Typisk vil en komponent også give nogle
yderligere muligheder som fx "Banned files list", "restricted file size" etc.
Det er korrekt, at du også kan udvide dit script til at kunne dette ... men
det bliver nemt imo noget høkerkode og tenderer til at man hacker sit script
- i stedet for at udvide funktionaliteten [1] korrekt. Det er også alt andet
lige nemmere at lave en CSV-liste over filendelser og give denne til
komponenten via dennes interfaces end det er at kode den selv.

Hvis du nu valgte at kompilere dit script til et rigtigt "COM-object", så vil
der for mig at se ikke være nogen forskel på dette og en (kommerciel)
komponent du kan hente fra fx. aspsmart.com . [2]

[1] En udvidelse af et eksisterende "line-by-line"-script som det du
medsendte vil i min bog altid være et hack - med mindre udvidelsen resulterer
i en mere struktureret kode med funktioner subs etc.

[2] Eller se evt på .Net ... der er nogle ret porno upload-funktioner med i
pakken fra MS :)

/Jesper



--
KONKURRENCE PÅ HTML.dk:
fortæl hvordan din drømmeeditor ser ud
og vind luksus webhoteller fra Wannafind
KLIK HER! => http://www.html.dk/editor

Mark S. Rasmussen (09-03-2002)
Kommentar
Fra : Mark S. Rasmussen


Dato : 09-03-02 15:09

> Jeg kan også se filstørrelsen, når jeg uploader til min almindelige server
> uden ekstra komponenter, men dog med dem, som var installeret fra starten.
> Det er:

Jeg taler ikke om filstørrelsen, den er jeg ret ligeglad med. Men den
fysiske billedstørrelse, altså pixels*pixels. Og som jeg også sagde før er
der også ofte problemer med upload uden komponent funktioner og store filer.
Og yderligere er der langt større performance i kompilerede upload
komponenter.

Mvh Mark
--
www.gameshots.dk - For seriøse gamere!
www.profiled.org - Vil du købe den?



Jakob Munck (09-03-2002)
Kommentar
Fra : Jakob Munck


Dato : 09-03-02 16:45

Det er rigtig nok at man ofte har brug for billedstørrelsen i pixels, men
kan man ikke finde ud af den på anden må end ved at bruge en
uploadkomponent? Ligger der ikke nogle funktioner i FileSystemObject eller
DictionaryObject, der kan finde denne større på en fil man har uploade?

v.h.
Jakob Munck



Mark S. Rasmussen (09-03-2002)
Kommentar
Fra : Mark S. Rasmussen


Dato : 09-03-02 16:56

> Det er rigtig nok at man ofte har brug for billedstørrelsen i pixels, men
> kan man ikke finde ud af den på anden må end ved at bruge en
> uploadkomponent? Ligger der ikke nogle funktioner i FileSystemObject eller
> DictionaryObject, der kan finde denne større på en fil man har uploade?

Nej, det findes ikke. Men jeg har dog engang brugt en metode da jeg ikke
havde adgang til upload komponent. Det gik simpelt nok ud på at jeg åbnede
en html side med billedet på efter jeg havde uploadet det. Så fik jeg via
Javascript størrelserne sendt videre til en næste side i querystringen, men
det er besværligt og kan ikke anbefales.

Mvh Mark
--
www.gameshots.dk - For seriøse gamere!
www.profiled.org - Vil du købe den?



Jesper Stocholm (09-03-2002)
Kommentar
Fra : Jesper Stocholm


Dato : 09-03-02 18:32

Jakob Munck wrote in
news:3c8a2c6e$0$63820$edfadb0f@dspool01.news.tele.dk:

> Det er rigtig nok at man ofte har brug for billedstørrelsen i pixels,
> men kan man ikke finde ud af den på anden må end ved at bruge en
> uploadkomponent? Ligger der ikke nogle funktioner i FileSystemObject
> eller DictionaryObject, der kan finde denne større på en fil man har
> uploade?
>

hvordan skulle det kunne ligge i dictionary-objectet ? Dictionary-objectet
har jo den eneste egenskab, at det er nemt at slå op i ... der ligger ikke
noget data i det som udgangspunkt - det skal du selv putte i.

--
Jesper Stocholm
http://stocholm.dk
http://asp.stocholm.dk
Svar til gruppen og ikke til mig privat pr. email :|

Jakob Munck (09-03-2002)
Kommentar
Fra : Jakob Munck


Dato : 09-03-02 22:20

>
> hvordan skulle det kunne ligge i dictionary-objectet ? Dictionary-objectet
> har jo den eneste egenskab, at det er nemt at slå op i ... der ligger ikke
> noget data i det som udgangspunkt - det skal du selv putte i.
>

Men så i et af de andre default-installerede objekter? Er der virkelig ikke
et eneste af IIS-serverens default-installerede teknologier der kan aflæse
et billeds pixel-størrelse???

v.h.
Jakob Munck



Mark S. Rasmussen (10-03-2002)
Kommentar
Fra : Mark S. Rasmussen


Dato : 10-03-02 00:05

> Men så i et af de andre default-installerede objekter? Er der virkelig
ikke
> et eneste af IIS-serverens default-installerede teknologier der kan aflæse
> et billeds pixel-størrelse???

Nej...



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408939
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste