webForumDet fria alternativet

Om fil finns då ska den inte upploada igen

ASP

27 svar · 683 visningar · startad av voigtann1

Medlem sedan juni 20019 519 inlägg
Frågan#1

Jag kör ASP smart Upload med denna kod:

<%
   On Error Resume Next
'  Variables
'  *********
   Dim mySmartUpload
   Dim file
   Dim oConn
   Dim oRs
   Dim intCount
   intCount=0
        
'  Object creation
'  ***************
   Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

'  Only allow txt or htm files
'  ***************************
   mySmartUpload.AllowedFilesList = "cfg,txt,zip,fcf"

'  DeniedFilesList can also be used :
   ' Allow all files except exe, bat and asp
   ' ***************************************
   ' mySmartUpload.DeniedFilesList = "exe,bat,asp,html"

'  Deny physical path
'  *******************
   mySmartUpload.DenyPhysicalPath = True

'  Only allow files smaller than 50000 bytes
'  *****************************************
   mySmartUpload.MaxFileSize = 50000

'  Upload
'  ******
   mySmartUpload.Upload

'  Connect to the DB
'  *****************
   Set oConn = Server.CreateObject("ADODB.Connection")
   curDir = Server.MapPath("db/config.mdb")
   oConn.Open "DBQ="& curDir &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

'  Open a recordset
'  ****************
   strSQL = "SELECT user,game,mo,global,version,name,info,FILENAME,FILE FROM Files"

   Set oRs = Server.CreateObject("ADODB.recordset")
   Set oRs.ActiveConnection = oConn
   oRs.Source = strSQL
   oRs.LockType = 3
   oRs.Open

'  Select each file
'  ****************
   For each file In mySmartUpload.Files
   '  Only if the file exist
   '  **********************
      If not file.IsMissing Then

      '  Add the current file in a DB field
      '  **********************************
         oRs.AddNew
		oRs("user")		=	session("user")
		oRs("game")		=	mySmartUpload.Form("game")
		oRs("mo")		=	mySmartUpload.Form("MODI")
		oRs("version")		=	mySmartUpload.Form("version")
		oRs("name")		=	mySmartUpload.Form("configname")
	if mySmartUpload.Form("info") = "" then
		oRs("info")		=	""
	else
		oRs("info")		=	mySmartUpload.Form("info")	
	end if

         file.FileToField oRs.Fields("FILE")
		oRs("FILENAME")		=	file.FileName
		oRs("user")		=	session("user")
		oRs("game")		=	mySmartUpload.Form("game")
		oRs("mo")		=	mySmartUpload.Form("MODI")
		oRs("version")		=	mySmartUpload.Form("version")
		oRs("name")		=	mySmartUpload.Form("configname")
		oRs("info")		=	mySmartUpload.Form("info")
if mySmartUpload.Form("global") = false then
		oRs("global")		=	false
else
		oRs("global")		=	true
end if
         oRs.Update
         intCount = intCount + 1
         intCount = mySmartUpload.Save("members/" & session("user"))
      End If
   Next

'  Trap errors
'  ***********
   If Err Then
      Response.Write("<b>Wrong selection : </b>" & Err.description)
   Else
   '  Display the number of files uploaded
   '  ************************************
      Response.Write(intCount & " file(s) uploaded.")
   End If

'  Destruction
'  ***********
   oRs.Close
   oConn.Close
   Set oRs = Nothing 
   Set oConn = Nothing 
response.redirect "archive.asp?member=" & session("user")
%>

Hur gör man så att den kollar först om filen redan finns i databasen för just den användaren?

Medlem sedan nov. 20017 144 inlägg
#2

Med FSO kan du göra detta, men vill du kolla i databasen får du väl göra ngn if-sats?!

<% 
Set file = Server.CreateObject( "Scripting.FileSystemObject" ) 
If file.FileExists( "/sökvägen till din fil" ) Then 
Response.Write"Finns" 
Else 
Response.Write"Finns inte" 
End If 
%>
Medlem sedan juni 20019 519 inlägg
#3

<font class="text1">

<%
On Error Resume Next
' Variables
' *********
Dim mySmartUpload
Dim file
Dim oConn
Dim oRs
Dim intCount
intCount=0

' Object creation
' ***************
Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

' Only allow txt or htm files
' ***************************
mySmartUpload.AllowedFilesList = "cfg,txt,zip,fcf"

' DeniedFilesList can also be used :
' Allow all files except exe, bat and asp
' ***************************************
' mySmartUpload.DeniedFilesList = "exe,bat,asp,html"

' Deny physical path
' *******************
mySmartUpload.DenyPhysicalPath = True

' Only allow files smaller than 50000 bytes
' *****************************************
mySmartUpload.MaxFileSize = 50000

' Upload
' ******
mySmartUpload.Upload

' Connect to the DB
' *****************
Set oConn = Server.CreateObject("ADODB.Connection")
curDir = Server.MapPath("databas/databas.mdb")
oConn.Open "DBQ="& curDir &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

Set file = Server.CreateObject( "Scripting.FileSystemObject" )
If not file.FileExists( "/members/"& session("user") & "/" & file.FileName) Then
Response.Write"Finns"
Else

' Open a recordset
' ****************
strSQL = "SELECT user,game,mo,global,version,name,info,FILENAME,FILE FROM Files"

Set oRs = Server.CreateObject("ADODB.recordset")
Set oRs.ActiveConnection = oConn
oRs.Source = strSQL
oRs.LockType = 3
oRs.Open

' Select each file
' ****************
For each file In mySmartUpload.Files
' Only if the file exist
' **********************
If not file.IsMissing Then

  '  Add the current file in a DB field
  '  \*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*
     oRs.AddNew
	oRs("user")		=	session("user")
	oRs("game")		=	mySmartUpload.Form("game")
	oRs("mo")		=	mySmartUpload.Form("MODI")
	oRs("version")		=	mySmartUpload.Form("version")
	oRs("name")		=	mySmartUpload.Form("configname")
if mySmartUpload.Form("info") = "" then
	oRs("info")		=	""
else
	oRs("info")		=	mySmartUpload.Form("info")	
end if

     file.FileToField oRs.Fields("FILE")
	oRs("FILENAME")		=	file.FileName
	oRs("user")		=	session("user")
	oRs("game")		=	mySmartUpload.Form("game")
	oRs("mo")		=	mySmartUpload.Form("MODI")
	oRs("version")		=	mySmartUpload.Form("version")
	oRs("name")		=	mySmartUpload.Form("configname")
	oRs("info")		=	mySmartUpload.Form("info")

if mySmartUpload.Form("global") = false then
oRs("global") = false
else
oRs("global") = true
end if
oRs.Update
intCount = intCount + 1
intCount = mySmartUpload.Save("members/" & session("user"))
End If
Next

' Trap errors
' ***********
If Err Then
Response.Write("<b>Wrong selection : </b>" & Err.description)
Else
' Display the number of files uploaded
' ************************************
Response.Write(intCount & " file(s) uploaded.")
End If

' Destruction
' ***********
oRs.Close
oConn.Close
Set oRs = Nothing
Set oConn = Nothing
response.redirect "archive.asp?member=" & session("user")

Response.Write"Finns inte"
End If
%></font>

Detta fungera inte =(

Medlem sedan dec. 19996 522 inlägg
#4

If not file.FileExists( "/members/"& session("user") & "/" & file.FileName) Then

använda server mappath här istället

Medlem sedan juni 20019 519 inlägg
#5

hur då?

Medlem sedan mars 20015 287 inlägg
#6
Set file = Server.CreateObject( "Scripting.FileSystemObject" ) 
If not file.FileExists( "/members/"& session("user") & "/" & file.FileName) Then 
Response.Write"Finns" 
Else

Nu skriver du väl att om filen INTE finns, skriv ut "Finns" annars (om filen finns) lägg in i databas osv...

Det blir väl lite fel?

Medlem sedan juni 20019 519 inlägg
#7

mm =)

Medlem sedan juni 20019 519 inlägg
#8

Nu kör jag:

<%
   On Error Resume Next
'  Variables
'  *********
   Dim mySmartUpload
   Dim file
   Dim oConn
   Dim oRs
   Dim intCount
   intCount=0
        
'  Object creation
'  ***************
   Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")

'  Only allow txt or htm files
'  ***************************
   mySmartUpload.AllowedFilesList = "cfg,txt,zip,fcf"

'  DeniedFilesList can also be used :
   ' Allow all files except exe, bat and asp
   ' ***************************************
   ' mySmartUpload.DeniedFilesList = "exe,bat,asp,html"

'  Deny physical path
'  *******************
   mySmartUpload.DenyPhysicalPath = True

'  Only allow files smaller than 50000 bytes
'  *****************************************
   mySmartUpload.MaxFileSize = 50000

'  Upload
'  ******
   mySmartUpload.Upload

'  Connect to the DB
'  *****************
   Set oConn = Server.CreateObject("ADODB.Connection")
   curDir = Server.MapPath("db/config.mdb")
   oConn.Open "DBQ="& curDir &";Driver={Microsoft Access Driver (*.mdb)};DriverId=25;FIL=MS Access;"

[b]Set file = Server.CreateObject( "Scripting.FileSystemObject" ) 
If not file.FileExists( "/members/"& session("user") & "/" & file.FileName) Then 
[/b]

'  Open a recordset
'  ****************
   strSQL = "SELECT user,game,mo,global,version,name,info,FILENAME,FILE FROM Files"

   Set oRs = Server.CreateObject("ADODB.recordset")
   Set oRs.ActiveConnection = oConn
   oRs.Source = strSQL
   oRs.LockType = 3
   oRs.Open

'  Select each file
'  ****************
   For each file In mySmartUpload.Files
   '  Only if the file exist
   '  **********************
      If not file.IsMissing Then

      '  Add the current file in a DB field
      '  **********************************
         oRs.AddNew
		oRs("user")		=	session("user")
		oRs("game")		=	mySmartUpload.Form("game")
		oRs("mo")		=	mySmartUpload.Form("MODI")
		oRs("version")		=	mySmartUpload.Form("version")
		oRs("name")		=	mySmartUpload.Form("configname")
	if mySmartUpload.Form("info") = "" then
		oRs("info")		=	""
	else
		oRs("info")		=	mySmartUpload.Form("info")	
	end if

         file.FileToField oRs.Fields("FILE")
		oRs("FILENAME")		=	file.FileName
		oRs("user")		=	session("user")
		oRs("game")		=	mySmartUpload.Form("game")
		oRs("mo")		=	mySmartUpload.Form("MODI")
		oRs("version")		=	mySmartUpload.Form("version")
		oRs("name")		=	mySmartUpload.Form("configname")
		oRs("info")		=	mySmartUpload.Form("info")
if mySmartUpload.Form("global") = false then
		oRs("global")		=	false
else
		oRs("global")		=	true
end if
         oRs.Update
         intCount = intCount + 1
         intCount = mySmartUpload.Save("members/" & session("user"))
      End If
   Next

'  Trap errors
'  ***********
   If Err Then
      Response.Write("<b>Wrong selection : </b>" & Err.description)
   Else
   '  Display the number of files uploaded
   '  ************************************
      Response.Write(intCount & " file(s) uploaded.")
   End If

'  Destruction
'  ***********
   oRs.Close
   oConn.Close
   Set oRs = Nothing 
   Set oConn = Nothing 
response.redirect "archive.asp?member=" & session("user")
[b]else
Response.Write"Finns" 
end if[/b]
%>

Och den lägger upp filen ändå... även om den finns uppe =(

Medlem sedan juni 20019 519 inlägg
#9

vad är det för fel? e det ASP-Smart upload som är knäpp?

Medlem sedan mars 20015 287 inlägg
#10

Du kan ju börja med att kommentera bort:

On Error Resume Next

och se om det ger dig något.

Medlem sedan juni 20019 519 inlägg
#11

Testade lite nu får jag bara errors =):

Error Type:
Microsoft VBScript compilation (0x800A0409)
Unterminated string constant
/voigtan/config/Sample4.asp, line 46, column 78

If file.FileExists( "members/"& session("user") & "/" & file.FileName &") Then
Medlem sedan dec. 2000399 inlägg
#12
If file.FileExists("members/" & session("user") & "/" & file.FileName) Then
Medlem sedan juni 20019 519 inlägg
#13

Error Type:
Microsoft VBScript runtime (0x800A01B6)
Object doesn't support this property or method: 'FileName'
/voigtan/config/Sample4.asp, line 47

 If file.FileExists("members/" & session("user") & "/" & file.FileName) Then

varför? allt som jag tycker ska fungera gör det inte!

Medlem sedan dec. 19996 721 inlägg
#14

file.name

Medlem sedan juni 20019 519 inlägg
#15

tyvärr =(
jag använder för att lägga upp den info i databasen:
oRs("FILENAME") = file.FileName

så det borde ju ändå vara file.filename eller?

Medlem sedan mars 20015 287 inlägg
#16

Vad skrivs ut om du skriver:

response.write "/members/"& session("user") & "/" & file.FileName

?

Skrivs rätt fil o sökväg ut då?

Medlem sedan juni 20019 519 inlägg
#17

får:
Error Type:
Microsoft VBScript runtime (0x800A01A8)
Object required: ''

Medlem sedan mars 20015 287 inlägg
#18

mao verkar det bli fel med file.FileName eller?

Medlem sedan juni 20019 519 inlägg
#19

ja... jag tror det.. men hur ska man då kunna lösa det? det måste ju kunna göras

Medlem sedan dec. 19996 721 inlägg
#20

Ah, sorry, såg fel.

Du kollar file.filename, men file är ju inte filen, utan ditt FileSystemObject. Om du bara kan ladda upp en fil i formuläret så kan du nog köra med

If not file.FileExists( "/members/"& session("user") & "/" & mySmartUpload.Files(1).FileName) Then

annar får du lägga kolla inne i loopen

274 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
135 ms — ändringar (db)