ja, jag får ta det från början tror jag.. ingen felmeddelande kommer upp, bara "sidan kan inte visas", och IIS lägger av p.g.a. överbelastning typ...
Uploadscript utan komponent 2
93 svar · 6 683 visningar · startad av OveRRidE · sida 4 av 5
skumt
får följande fel:
ERROR: Couldn´t find the form-field - txtname - in the collection.
KÖr den senaste versionen
Vad heter ditt input-form då?
Ja du... kolla igenom alla formulärnamn en gång till, så att dom stämmer med koden.. annars vet jag inte..
Det gick inte att kontrollera hur stor filen var innan man laddade upp den eller?
Kanske nån har en hint hur jag skall göra så jag kan lägga till det själv...
Micklade lite med en kodsnutt jag hittade på msdn ang. läsa av filstorleken innan man laddar upp filen. Den rödmarkerade koden är det jag lagt till.
<%
'Adjust this depending on the size of the files you'll
'be expecting; longer timeout for larger files!
Server.ScriptTimeout = 5400
Const ForWriting = 2
Const TristateTrue = -1
CrLf = Chr(13) & Chr(10)
'This function retreives a field's name
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
'This function retreives a file field's filename
Function GetFileName(infoStr)
sPos = InStr(infoStr, "filename=")
EndPos = InStr(infoStr, Chr(34) & CrLf)
GetFileName = Mid(infoStr, sPos + 10, EndPos - _
(sPos + 10))
End Function
'This function retreives a file field's MIME type
Function GetFileType(infoStr)
sPos = InStr(infoStr, "Content-Type: ")
GetFileType = Mid(infoStr, sPos + 14)
End Function
'Yank the file (and anything else) that was posted
PostData = ""
Dim biData
biData = Request.BinaryRead(Request.TotalBytes)
'Careful! It's binary! So, let's change it into
'something a bit more manageable.
For nIndex = 1 to LenB(biData)
PostData = PostData & Chr(AscB(MidB(biData,nIndex,1)))
Next
'Having used BinaryRead, the Request.Form collection is
'no longer available to us. So, we have to parse the
'request variables ourselves!
'First, let's find that encoding type!
ContentType = Request.ServerVariables( _
"HTTP_CONTENT_TYPE")
ctArray = Split(ContentType, ";")
'File posts only work well when the encoding is
'"multipart/form-data", so let's check for that!
If Trim(ctArray(0)) = "multipart/form-data" Then
ErrMsg = ""
' grab the form boundary...
bArray = Split(Trim(ctArray(1)), "=")
Boundary = Trim(bArray(1))
'Now use that to split up all the variables!
FormData = Split(PostData, Boundary)
'Extract the information for each variable and its data
Dim myRequest, myRequestFiles(9, 3)
Set myRequest = CreateObject("Scripting.Dictionary")
FileCount = 0
For x = 0 to UBound(FormData)
'Two CrLfs mark the end of the information about
'this field; everything after that is the value
InfoEnd = InStr(FormData(x), CrLf & CrLf)
If InfoEnd > 0 Then
'Get info for this field, minus stuff at the end
varInfo = Mid(FormData(x), 3, InfoEnd - 3)
'Get value for this field, being sure to skip
'CrLf pairs at the start and the CrLf at the end
varValue = Mid(FormData(x), InfoEnd + 4, _
Len(FormData(x)) - InfoEnd - 7)
'Is this a file?
If (InStr(varInfo, "filename=") > 0) Then
'Place it into our files array
'(While this supports more than one file
'uploaded at a time we only consider the
'single file case in this example)
myRequestFiles(FileCount, 0) = GetFieldName( _
varInfo)
myRequestFiles(FileCount, 1) = varValue
myRequestFiles(FileCount, 2) = GetFileName( _
varInfo)
myRequestFiles(FileCount, 3) = GetFileType( _
varInfo)
FileCount = FileCount + 1
Else
'It's a regular field
myRequest.add GetFieldName(varInfo), varValue
End If
End If
Next
Else
ErrMsg = "Wrong encoding type!"
End If
'Save the actual posted file
'If supporting more than one file, turn this into a loop!
[red]Dim Tmp
Tmp = Split(PostData, Left(PostData, InStr(PostData, VBCrLf)))
If Len(Right(Tmp(1), Len(Tmp(1)) - InStr(Tmp(1), VBCrLf & VBCrLf))) - 5 <= 60000 Then[/red]
Set lf = server.createObject("Scripting.FileSystemObject")
If myRequest("filename") = "original" Then
'Use the filename that came with the file
'At this point, you need to determine what sort of
'client sent the file. Macintoshes only send the file
'name, with no path information, while Windows clients
'send the entire path of the file that was selected
BrowserType = UCase(Request.ServerVariables( _
"HTTP_USER_AGENT"))
If (InStr(BrowserType, "WIN") > 0) Then
'It's Windows; yank the filename off the end!
sPos = InStrRev(myRequestFiles(0, 2), "\")
fName = Mid(myRequestFiles(0, 2), sPos + 1)
End If
If (InStr(BrowserType, "MAC") > 0) Then
'It's a Mac. Simple.
'(Mac filenames can contain characters that are
'illegal under Windows, so look out for that!)
fName = myRequestFiles(0, 2)
End If
'If your upload path is different, set that here
FilePath = "./" & fName
Else
'Use the user-specified filename instead
'If your upload path is different, set that here
FilePath = "./" & myRequest("userSpecifiedName")
End If
SavePath = Server.MapPath(FilePath)
Set SaveFile = lf.CreateTextFile(SavePath, True)
SaveFile.Write(myRequestFiles(0, 1))
SaveFile.Close
[red]Else
ErrMsg = "File To Large <font color = '#ff0000'>( Max 60000 Bytes )</font>"
End If[/red]
'IIS may hang if you don't explicitly return SOMETHING.
'So, redirect to another page or provide some kind of
'feedback below...
%>
<html>
<body>
<% If ErrMsg = "" Then %>
<br><br>Thanks for the file! It was yummy!
<% Else %>
<%= ErrMsg %>
<% End If %>
<hr><br>
ser väl i det stora hela ut som att det skulle gå att implementera i uploadklassen... kanske vore något
Re: skumt
eddy1 skrev:
får följande fel:
ERROR: Couldn´t find the form-field - txtname - in the collection.
KÖr den senaste versionen
får samma problem som dej! =/
Jag har inte rört nått i koden utan felet ingick från fabrik :D
Det är ett fält som fattas i formuläret i index.asp .... tyvärr ....
Ska försöka att hinna uppdatera filen igen + lägga till egenskapen FileSize .... men, för att få fram det behöver man faktiskt ladda upp hela filen först .... annars får man lösa det med client-side javascript .... funkar dock inte i alla browsers ...
När det kommer kan jag inte lova ... måste landa ordentligt på nya jobbet först. Mycket nytt att lära sig ...
cya,
/PatrikB
cya,
/PatrikB
Hej alla,
Jag har laddat hem den senaste versionen av uploadskriptet. Innehåller upload.asp, index.asp & clsUpload.asp men inte någon hjälpfil med något exempel. Det skulle vara trevligt att ha.
Var ställer man in var filerna ska kopieras någonstans?
Rakt "out of the box" installationen ger följande fel:
ERROR: Couldn´t find the form-field - txtname - in the collection.
Antar att jag ska ställa in någon parameter någonstans. Men var?
Mvh
M
Nej, parameter saknas knappast.
På rad 15 i filen 'upload.asp' anropas forumlärelementet 'txtname', som inte fanns i filen som postar till formuläret; 'index.asp'.
Jag har nu lagt till detta fält och den uppdaterade versionen 1.5.4 väntas komma så fort voigtann har godkänt inlägget i ASP-script-forumet.
Dessutom finns det en Readme-fil som visar gränssnittet i klassen. Den heter ReadMe.txt och ligger i zip-filen, som vanligt.
Det handlar tydligen om en bugg i forumet just nu, som sätter stopp för publiceringen av scriptet. Filerna är postade och väntar bara på att godkännas av voigtann, såfort dev-gruppen har löst problemet med filen/filerna.
Tålamod. :)
Nu finns 1.5.4 att ladda ner! Kul.
Går det att begränsa uploads beroende på filextention och filstorlek eller får man skriva det själv?
Tack. Det fungerar i övrigt utmärkt. Bra jobbat!
Har i och för sig inte testat den senaste versionen av upload-scriptet, men jag har för mig att jag i det gamla försökte skicka med en request.form, men utan att lyckas. Dvs, jag loopade upp alla mappar och undermappar i en katalog, så att man skulle kunna välja vilken mapp man ville att filen skulle sparas i.
men jag har för mig att jag då fick ett felmeddelande, där det stod att request.form måste omvandlas till binärt eller något sådant. Hur gör man för att kunna skicka med forms och querystrings?
En annan fråga. Borde det inte kunna gå att ordna så att man själv kan välja på vilket namn man vill ge filen, istället för att använda sig av det namn man har på datorn?
Jag lyckas inte få bytt namn på filen utan att bli av med filändelsen, hur löser jag det? (har senaste verren)
Hej
Hur ska jag editera filen om jag endast vill ha EN fil att ladda upp. ? Får ett felmeddelande avv "Object Krävs".
Det jag gjort är att ha satt anotherFile2 till type 'hidden'.
Så, vad ska jag göra?
Det skumma är att trots detta felmess så laddas filen upp...?
Tack !!!
Uploadscriptet funkar inte för mig...
Hejhopp!
Hittade detta Uploadscriptet och tänkte testa det på mitt webhotell som heter B-one. Jag får det tyvärr inte att fungera, kan det bero på webhotellet???
Felmeddelandet jag får är följande (och jag har inte ändrat någonting på filerna):
Microsoft VBScript compilation error '800a03ea'
Syntax error
/thai/upload.asp, line 14
Set objUpload = New overrUpload
----------------^
All hjälp med detta vore tacknämligt! Om någon annan har en bra metod för att ladda upp filer på ovan nämnda webhotell så är det oxå till stor hjälp!!!
greetings
/Johan...