webForumDet fria alternativet

Upload skript som inte vill ta min request.querystring

9 svar · 305 visningar · startad av mattiasnordin

mattiasnordinMedlem sedan maj 20012 080 inlägg
#1

Använder uploadclassen som finns någonstans på detta forum. Vill kunna ändra vart filen ska kopieras med en variabel. Men jag får inte riktigt till det.

<%
Option Explicit

Dim varCopyToPath 
Dim objUpload
Dim strName
dim objFile
Dim objFile2
Dim varyErrors
Dim iErr
Dim blnErr

'### copy to path ###'
varCopyToPath = request.querystring("copy_to_path")	
if varCopyToPath <> "" then
	response.write "<hr>ERROR. Copy to path is blank...<hr>"
else response.write "<hr>" &varCopyToPath &"<hr>"
end if

blnErr = False

Set objUpload = New overrUpload
	strName = objUpload("txtName")

	Response.Write("Copying file to webserver...")

	'## -- get the first file for upload --
	Set objFile = objUpload.Form("theFile")
		'## -- check if we have a file --
		If objFile.IsFile Then
			'## -- file exists. proceed saving file. --
			response.write "<hr>" &Server.MapPath(varCopyToPath &objFile.Filename)
			Call objFile.SaveToFile(Server.MapPath(varCopyToPath &objFile.Filename), True)
			'## -- check if any errors occured --
			If objFile.HasErrors Then
				blnErr = True
				'## -- HUSTON! we got errors. proceed --
				'## -- get all error messages --
				varyErrors = objFile.GetErrors()
				'## -- loop through all errors --
				For iErr = 0 TO UBound(varyErrors)
					'## -- print out error --
					Response.Write(varyErrors(iErr) & "<hr>")
				Next
			End If
		End If
	Set objFile = Nothing
	
	sub DONTRUN
	'## -- get second file for upload --
	Set objFile2 = objUpload.Form("anotherFile")
		'## -- check if we have a file --
		If objFile2.IsFile Then
			'## -- file exists. proceed saving file. --
			Call objFile2.SaveToFile(Server.MapPath("/upload/" & objFile2.Filename), True)
			'## -- check if any errors occured --
			If objFile2.HasErrors Then
				blnErr = True
				'## -- HUSTON! we got errors. proceed --
				'## -- get all error messages --
				varyErrors = objFile2.GetErrors()
				'## -- loop through all errors --
				For iErr = 0 TO UBound(varyErrors)
					'## -- print out error --
					Response.Write(varyErrors(iErr) & "<hr>")
				Next
			End If
		End If
	Set objFile2 = Nothing
	end sub
	
Set objUpload = Nothing

'## -- check if we have any errors. If no errors redirect user to default page --
'If blnErr = False Then Response.Redirect("index.asp")
%>
<!--#INCLUDE VIRTUAL="/classes/clsupload.asp"-->

Överst i denna så skriver jag ut varCopyToPath men denna blir konstant "" (ingenting). Vad gör jag för fel.

mattiasnordinMedlem sedan maj 20012 080 inlägg
#2

hmmm....

Byter jag ut querystring mot request.form så får jag följande fel:

Request object error 'ASP 0206 : 80004005'

Cannot call BinaryRead

/classes/clsupload.asp, line 145

Cannot call BinaryRead after using Request.Form collection. ERROR: Couldn´t find the form

Jag använder hellre request.form om det är möjligt.

OveRRidEMedlem sedan feb. 200112 078 inlägg
#3

På rad 23 i ovan kod, finns denna rad. Den hämtar från form-samlingen.

strName = objUpload("txtName")
mattiasnordinMedlem sedan maj 20012 080 inlägg
#4

Ok...

Följande försök ger nu följande fel:

Set objUpload = New overrUpload
	'### copy to path ###'
	varCopyToPath = objUpload("copy_to_path")
		if varCopyToPath = "" then
			response.write "<hr>ERROR. Copy to path is blank...<hr>"
		else 
			response.write "<hr>" &varCopyToPath &"<hr>"
		end if

	Response.Write("Copying file to webserver...")

	'## -- get the first file for upload --
	Set objFile = objUpload.Form("theFile")
		'## -- check if we have a file --
		If objFile.IsFile Then
			'## -- file exists. proceed saving file. --
			response.write "<hr>" &Server.MapPath(varCopyToPath &objFile.Filename)
			Call objFile.SaveToFile(Server.MapPath(varCopyToPath &objFile.Filename), True)
			'## -- check if any errors occured --
			If objFile.HasErrors Then
				blnErr = True
				'## -- HUSTON! we got errors. proceed --
				'## -- get all error messages --
				varyErrors = objFile.GetErrors()
				'## -- loop through all errors --
				For iErr = 0 TO UBound(varyErrors)
					'## -- print out error --
					Response.Write(varyErrors(iErr) & "<hr>")
				Next
			End If
		End If
	Set objFile = Nothing

--------------------------------------------------------------------------------
/tab_log/personalmoten/aug/
--------------------------------------------------------------------------------
Copying file to webserver...
Microsoft VBScript runtime error '800a01a8'

Object required: '[string: "I:\_special\iar_intr"]'

/upload/upload.asp, line 28

mattiasnordinMedlem sedan maj 20012 080 inlägg
#5

Okej, my bad...
Ändrar jag formulärtypen från "file" till "text" så fungerar det inte. Men hur får jag till denna funktion? Jag vill alltså skicka filens path i ett text formulär istället för i ett file formulär...

<input name="theFile" type="text" id="theFile" value="<%=varSelectedLocalFile%>">

<input name="theFile" type="file" id="theFile">

// Tack, Mattias.

mattiasnordinMedlem sedan maj 20012 080 inlägg
#6

OveRRidE ?

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#7

Går inte att använda text. Hade varit lite farligt om hemsideägare kunde hämta filer från användares dator.

mattiasnordinMedlem sedan maj 20012 080 inlägg
#8

Jag använder alltså <input name="theFile" type="file" id="theFile"> för att välja den lokala filen på sida A sedan gör jag lite behandling och skickar sedan vidare filpathen till sida B som i sin tur skickar vidare pathen till upload.asp (uploadskriptet).

Går det att sätta en value på input type="file" ?

grrr...

OveRRidEMedlem sedan feb. 200112 078 inlägg
#9

mattiasnordin skrev:

OveRRidE ?

Jag är ingen dator. Jag är en människa och jag har ett behov av att äta, sova och bajsa precis som alla andra av samma ras som mig. Precis som du.

Därför kan jag inte vara närvarande på webForum 24 timmar om dygnet, även om jag hade velat det. Och det är därför, av denna enkla anledning, som du helt enkelt får vänta tills någon annan svarar på din fråga eller tills dess att jag råkar vara online igen. ;)

Men nu när jag ändå är här; vad exakt vill du utföra? Eller rättare sagt; varför vill du göra just så?

mattiasnordinMedlem sedan maj 20012 080 inlägg
#10
  1. Jag vill kunna sätta vilken katalog som jag ska kopiera filen till.
    Ovan fungerar OK!

  2. Efter jag har valt filen som ska kopieras (input type="file" ?) så kontrollerar jag vilken typ av fil det är etc och sedan laddar jag om samma sida för att visa GUI:t med nya optioner. När jag laddar om sidan så töms men input type="file" ruta datan och jag vet inte hur man sätter ett value på denna. Min tanke vara att skicka datan till ett textfält istället för file formuläret.

Sidan kommer enbart vara accessbart på ett slutet nätverk så jag är inte så bekymrad över säkerhetsrelaterade problem...

PS Har inte webforum, precis som Dilbert, regler som kräver att semester uttages för att utföra sina behov? Ha ha... Skojjar bara...
Snabbt svarat! ;-)
DS

140 ms totalt · 3 externa anrop · v20260731065814-full.86db40fa
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
138 ms — hämta tråd, inlägg och bilagor (db)