/ Forside/ Teknologi / Udvikling / ASP / Spørgsmål
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
Afbryd transmition ud fra headeren.
Fra : adam
Vist : 429 gange
200 point
Dato : 03-07-01 10:41

Er det muligt at afbryde en transmition ud fra hvad der står i headeren?

Jeg har en form hvor brugerne kan uploade en fil, derefter checker jeg på filens størrelse og type, for derefter at afvise filen hvis den er for stor, eller forkert type. Denne afvisning sker først i det øjeblik alt er sendt til serveren, nu er mit spørgsmål så, om det kan lade sige gøre at afvise requestet inden, for ellers kan folk ligge og sende 1 gigabyte med i headeren, og det finder jeg først ud af når det er modtaget.

Når man sender filer, ligger alle filerne i header informationen, og de første par linier i header fortæller hvor stor headeren er i alt, så hvis jeg kunne læse denne værdi, for derefter at afbryde requestet ville det være fint. Er der nogen af jer som ved, om dette kan lade sig gøre?

Adam

 
 
Kommentar
Fra : adam


Dato : 03-07-01 11:57

Hej Fehaar

Jeg skal ikke afbryde response, jeg skal derimod afbryde request objektet. For når der kommer et request fra en bruger kan hans header sagtens være 1 gigabyte lang, og det vil sige serveren vil stå og vente på, den har modtaget hele headeren, så jeg vil have lov til, at læse kun den første del af headeren, og udfra dette undersøge om den er for stor, og derefter afbryde requestet.

Adam

Kommentar
Fra : Nyhedsbruger


Dato : 03-07-01 18:55

On Tue, 03 Jul 2001 08:41:10 GMT, "adam" <adam.news@kandu.dk> wrote:

>Når man sender filer, ligger alle filerne i header informationen, og de
>første par linier i header fortæller hvor stor headeren er i alt, så
>hvis jeg kunne læse denne værdi, for derefter at afbryde requestet ville
>det være fint. Er der nogen af jer som ved, om dette kan lade sig gøre?

Jeg har ikke en dyt forstand på fil-upload, men kan du ikke bare tage
den i to step:
1) Hent og læs den første lille del, og hvis ok, så
2) Hent det hele

Good luck,

Jørn

--
Jørn Andersen
Brønshøj

Kommentar
Fra : adam


Dato : 04-07-01 09:45

Hej Jørn

Det er lige nødagtigt det som jeg gerne ville, men hvordan kan jeg splitte headeren op, så jeg kun læser lidt af gangen?

Adam

"Jørn Andersen" skrev d. 03-07-01 18:55 dette indlæg :
> On Tue, 03 Jul 2001 08:41:10 GMT, "adam" <adam.news@kandu.dk> wrote:
>
> >Når man sender filer, ligger alle filerne i header informationen, og de
> >første par linier i header fortæller hvor stor headeren er i alt, så
> >hvis jeg kunne læse denne værdi, for derefter at afbryde requestet ville
> >det være fint. Er der nogen af jer som ved, om dette kan lade sig gøre?
>
> Jeg har ikke en dyt forstand på fil-upload, men kan du ikke bare tage
> den i to step:
> 1) Hent og læs den første lille del, og hvis ok, så
> 2) Hent det hele
>
> Good luck,
>
> Jørn
>
> --
> Jørn Andersen
> Brønshøj

Kommentar
Fra : fehaar


Dato : 04-07-01 10:16

Det kan ikke lade sig gøre for dig at splitte headeren op når du får det tilsendt. Det er det mindste du skal læse for at kunne modtage informationen. Men hvorfor er det lige at headeren bliver så stor? Findes selve datamængden ikke i selve beskeden og ikke i headeren?

Kommentar
Fra : propan


Dato : 25-09-01 12:04

<%@ Language="VBScript" %>
<% Option Explicit %>
<!-- #INCLUDE FILE="fileupload.inc" -->

<HTML>
<HEAD>
<TITLE>Upload uden komponent</TITLE>
</HEAD>
<BODY>

<%
'*************************************
'**** Test af FileUpload funktion ****
'**** ****
'**** Upload .gif eller .jpg ****
'**** billede til mappen /upload ****
'*************************************

'Skal formen vises?
If Request.ServerVariables("REQUEST_METHOD") <> "POST" Then
%>
<FORM ENCTYPE="multipart/form-data" ACTION="uploadgfx.asp" METHOD="POST">
<P>Vælg et billede:<BR>
<INPUT NAME="fileupload" TYPE="file"><BR>
<INPUT NAME="Action" TYPE="submit" VALUE="Upload">
</FORM>
<%
Else
Dim intFileUpload, strContentType, strFilename, intFileTotalBytes

intFileUpload = FileUpload("upload/", 20000, Array("image/gif", "image/jpeg", "image/pjpeg"), Array("gif", "jpg"), strContentType, strFilename, intFileTotalBytes)

If intFileUpload = 0 Then
Response.Write "Filen " & strFilename & " blev uploaded.<BR>"
Response.Write "Det er en fil af typen " & strContentType & " og den fylder " & intFileTotalBytes & " bytes:<BR>"
Response.Write "<IMG SRC=""upload/" & strFilename & """><BR>"
Else
Response.Write "Der opstod en fejl under upload!<BR>"
Response.Write "Fejl nr: " & intFileUpload & "<BR>"
Response.Write "Filnavn: " & strFilename & "<BR>"
Response.Write "Filtype: " & strContentType & "<BR>"
Response.Write "Filstørrelse: " & intFileTotalBytes & "<BR>"
End If
End If
%>
</BODY>
</HTML>


<%
'-------------------- Start: fileupload.inc --------------------
'*
'* Sprog: VBScript
'*
'* Input:
'* strPath Streng med uploadpath, f.eks. "output/", "/asp/binary/upload/" eller ""
'* intMaxSize Tilladte grænse for filerne filer der uploades. Hvis < 1 er der ingen grænse.
'* arrAcceptType Array med accepterede Content-Type, f.eks. "image/gif", "image/jpeg". Hvis ("") er alle filtyper accepterede.
'* arrAcceptExt Array med sidste dele af filnavne, f.eks. "gif", "jpg" eller "kundennefil.xls". Hvis ("") er alle ext accepterede.
'*
'* Output: 0 hvis filen er uploaded korrekt.
'* 1 Request fra bruger gik galt
'* 2 Content med name="fileupload" blev ikke fundet
'* 3 Ingen filnavn
'* 4 Content-Type accepteres ikke
'* 5 Ext accepteres ikke
'* 6 Filen er for stor
'* 7 Filen blev ikke uploaded korrekt
'* strContentType Den fundne type, f.eks. "image/gif"
'* strFilename Det fundne filnavn, f.eks. "button.gif"
'* intFileTotalBytes Filens samlede størrelse, f.eks. 9853
'*
'* Eksempler på ContentTypes
'* Microsoft IE4 | Netscape NN4 | Beskrivelse
'* "image/gif" | "image/gif" | CompuServe Graphics Interchange (.gif)
'* "image/pjpeg" | "image/jpeg" | JPEG/JFIF Compliant (.jpg | .jif | .jpeg)
'* "application/octet-stream" | "application/msexcel" | Microsoft Excel-regneark (.xls)
'* "application/octet-stream" | "application/msword" | Microsoft Word-dokument (.doc)
'* "text/html" | "text/html" | HTML Document (.htm | .html)
'* "text/plain" | "application/x-unknown-content-type-asp_auto_file" | Active Server Page (.asp)
'* "text/plain" | "text/plain" | Tekstdokument (.txt)
'* "text/plain" | "application/x-unknown-content-type-Excel.CSV" | Separeret fil (.csv)
'* "application/octet-stream" | "application/octet-stream" | Binær fil (.bin)
'* "application/octet-stream" | "application/octet-stream" | Uden kendt filtype (.lol)
'* Bemærk i øvrigt, at
'* a. Der er desværre forskel på den tekst Microsoft og Netscape anvender på samme filtype.
'* b. Microsoft evaulerer ikke kun filens efternavn, men også det faktiske indhold!

Function FileUpload(strPath, intMaxSize, arrAcceptType, arrAcceptExt, ByRef strContentType, ByRef strFilename, ByRef intFileTotalBytes)
'Variable deklaration
Dim intPostTotalBytes, intStartPos, intEndPos, i
Dim bstrPostData, bstrDivider
Dim strTemp, strFileSpec
Dim arrSplit
Dim vbCrLfB
Dim bolStopLoop, bolContentTypeOK, bolExtOK
Dim fs, ts, f

'Sæt returværdier
strContentType = ""
strFilename = ""
intFileTotalBytes = 0

'Check: Er det faktisk POST upload?
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then

'Dan vbCrLf som binær streng
vbCrLfB = ChrB(13) & ChrB(10)

'Hent den binære POST fra brugeren
intPostTotalBytes = Request.TotalBytes 'Find antallet af bytes i POST
bstrPostData = Request.BinaryRead(intPostTotalBytes) 'Hent POST til en binær streng
If LenB(bstrPostData) <> intPostTotalBytes Then 'Check: Er antallet af bytes i POST forskelligt fra den binære streng?
'Returner værdi og stop
FileUpload = 1
Exit Function
End If

'Hent delelinien inkl. vbCrLfB (altid hele første linje)
bstrDivider = LeftB(bstrPostData, InStrB(bstrPostData, vbCrLfB) + 1)

'Default StartPos
intStartPos = 1

'Find Content-Disposition hvor name="fileupload"
bolStopLoop = False
Do
'Find starten af denne Content del (umiddelbart efter delelinien)
intStartPos = InStrB(intStartPos, bstrPostData, bstrDivider) + LenB(bstrDivider)
If intStartPos = 0 Then
'Ikke flere Content delere - Returner værdi og stop
FileUpload = 2
Exit Function
End If

'Find slutningen af denne Content del (umiddelbart inden den næste delelinie)
intEndPos = InStrB(intStartPos, bstrPostData, bstrDivider)
If intEndPos = 0 Then
'Ikke flere Content delere - Returner værdi og stop
FileUpload = 2
Exit Function
End If

'Hent denne Content-Disposition (uden vbCrLf)
strTemp = bin2str(MidB(bstrPostData, intStartPos, InStrB(intStartPos, bstrPostData, vbCrLfB) - intStartPos))

'Er fileupload feltet i denne Content-Disposition?
If InStr(LCase(strTemp), "name=""fileupload""") > 0 Then
'Stop løkken her
bolStopLoop = True
Else
'Start igen umiddelbart efter denne Content, men før næste divider
intStartPos = intEndPos
End If
Loop Until bolStopLoop

'Flyt intStartPos til efter Content-Disposition linjen
intStartPos = intStartPos + Len(strTemp) + 2

'Ekstrakt POST filnavnet fra strTemp
arrSplit = Split(strTemp, ";") 'Opdel strTemp ved ;: Content-Disposition: form-data; name="fileupload"; filename="filen.txt"

'Find filnavnet fra filename= array
strTemp = "" 'Værdi ved fejl
For i = 0 To UBound(arrSplit) 'Køres for alle i denne array
If LCase(Left(Trim(arrSplit), 9)) = "filename=" Then 'Står der filename= ?
strTemp = Trim(arrSplit)
Exit For
End If
Next

'Afbryd hvis der ikke blev fundet noget filnavn
If strTemp = "" Or strTemp = "filename=""""" Then
FileUpload = 3
Exit Function
End If

'Find filnavnet
arrSplit = Split(strTemp, """") 'Opdel streng ved "
strTemp = arrSplit(UBound(arrSplit) - 1) 'Næstsidste indholder filnavn
arrSplit = Split(strTemp, "\") 'Del ved alle \ Så indeholder den sidste filnavn.ext"
strFilename = arrSplit(UBound(arrSplit)) 'Hent den sidste array, der må være filnavnet

'Dan det fulde outputfilnavn via MapPath
strFileSpec = Server.MapPath(LCase(strPath & strFilename)) 'LCase kan evt fjernes herfra

'Hent Content-Type (uden vbCrLf)
strTemp = bin2str(MidB(bstrPostData, intStartPos, InStrB(intStartPos, bstrPostData, vbCrLfB) - intStartPos))

'Flyt intStartPos til efter Content-Type linjen
intStartPos = intStartPos + Len(strTemp) + 2

'Ekstrakt POST Content-Type
arrSplit = Split(strTemp, " ")
strContentType = arrSplit(UBound(arrSplit))

'Skal Content-Type checkes?
bolContentTypeOK = False
If arrAcceptType(LBound(arrAcceptType)) <> "" Then
For Each strTemp In arrAcceptType
If strContentType = strTemp Then
bolContentTypeOK = True
End If
Next

'Check: Er det en accepteret Content-Type?
If Not bolContentTypeOK Then
'ContentType ikke fundet - Returner værdi og stop
FileUpload = 4
Exit Function
End If
End If

'Skal ekstention checkes?
bolExtOK = False
If arrAcceptExt(LBound(arrAcceptExt)) <> "" Then
For Each strTemp In arrAcceptExt
If LCase(Right(strFilename, Len(strTemp))) = strTemp Then
bolExtOK = True
End If
Next

'Check: Er det en accepteret ekstention?
If Not bolExtOK Then
'Ekstention ikke fundet - Returner værdi og stop
FileUpload = 5
Exit Function
End If
End If

'Find faktiske start/slut på datafilen ved at fjerne foranstillede og efterstillede vbCrLfB
intStartPos = intStartPos + 2
intEndPos = intEndPos - 2
intFileTotalBytes = intEndPos - intStartPos

'Skal filstørrelsen checkes?
If intMaxSize > 0 Then
'Check: Er filen for stor?
If intFileTotalBytes > intMaxSize Then
'Filen er for stor - Returner værdi og stop
FileUpload = 6
Exit Function
End If
End If

'Åbn, skriv og luk outputfilen
Set fs = CreateObject("Scripting.FileSystemObject") 'Filsystem objekt
Set ts = fs.CreateTextFile(strFileSpec, True) 'Åbn outputfil, overskriv evt. eksisterende
For i = intStartPos To intEndPos - 1
ts.Write(Chr(AscB(MidB(bstrPostData, i, 1)))) 'Skriv data eet tegn af gangen
Next
ts.Close 'Luk outputfil

'Check: Blev filen oprettet og har den samme størrelse?
Set f = fs.GetFile(strFileSpec)
If f.Size <> intFileTotalBytes Then
FileUpload = 7
Exit Function
End If

'* Returner OK
FileUpload = 0
End If
End Function

'* Funktion der oversætter en bstr binær streng til en almindelig streng
'* Pas på med 00 værdier, da de fungerer som EOF i en almindelig streng
Function bin2str(bstrBinary)
Dim i
For i = 1 To LenB(bstrBinary)
bin2str = bin2str & Chr(AscB(MidB(bstrBinary, i, 1)))
Next
End Function

'-------------------- Slut: fileupload.inc --------------------
%>


Kommentar
Fra : zonker


Dato : 14-07-02 06:12

Hvis spørgsmålet er løst må du gerne være sød at lukke dette ??

Du har følgende muligheder
Dette spørgsmål er blevet annulleret, det er derfor ikke muligt for at tilføje flere kommentarer.
Søg
Reklame
Statistik
Spørgsmål : 177429
Tips : 31962
Nyheder : 719565
Indlæg : 6407950
Brugere : 218878

Månedens bedste
Årets bedste
Sidste års bedste