Asp classic 使用asp classic以唯一的名称或id在数据库中保存文件
我是asp新手,我的代码运行得非常好,但我面临两个问题,尽管这些问题不会影响应用程序。我只想在逻辑上为应用程序提供良好的功能 当我上传excel文件时,如果同名文件已经存在,我会覆盖它;如果我手动更改文件名,则文件将以新名称保存 我想做的是:Asp classic 使用asp classic以唯一的名称或id在数据库中保存文件,asp-classic,Asp Classic,我是asp新手,我的代码运行得非常好,但我面临两个问题,尽管这些问题不会影响应用程序。我只想在逻辑上为应用程序提供良好的功能 当我上传excel文件时,如果同名文件已经存在,我会覆盖它;如果我手动更改文件名,则文件将以新名称保存 我想做的是: 使用唯一名称或新名称保存此新文件,我不知道如何执行此操作 使用登录用户信息将此文件保存在数据库中(供将来参考) 我希望我的问题能得到解决。非常感谢 代码 上传excel.asp < form action="upload_excel_process
< form action="upload_excel_process.asp" method="post" enctype="multipart/form-data" name="frmMain" onSubmit="return checkData();" >
<input name="file1" type="file"> <input type="submit" name="Submit" value="Submit">
< %mem_id=session("mem_id")%>
< input type="hidden" name="client_id" value="<%=mem_id%>">
< /form>
上载\u excel\u process.asp
<%client_id=session("mem_id")%>
<%
Dim xlApp,xlBook,xlSheet1,xlSheet2,OpenFile,i
Dim Conn,strSQL,client_id,objExec
Dim mySmartUpload
Dim sFileName
Set mySmartUpload = Server.CreateObject("aspSmartUpload.SmartUpload")
mySmartUpload.Upload
sFileName = mySmartUpload.Files("file1").FileName
If sFileName <> "" Then
mySmartUpload.Files("file1").SaveAs(Server.MapPath("excel/"&sFileName))
OpenFile = "excel/"&sFileName
Set xlApp = Server.CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open(Server.MapPath(OpenFile))
Set xlSheet1 = xlBook.Worksheets(1)
Set Conn = Server.Createobject("ADODB.Connection")
Conn.Open "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("../db/database.mdb"),"" , ""
For i = 2 To 5
If Trim(xlSheet1.Cells.Item(i,1)) <> "" Then
strSQL = "" <br>
strSQL = strSQL &"INSERT INTO add_contacts "
strSQL = strSQL &"(client_id,name_receiver,contact_person_receiver,street_receiver,city_receiver, tel_receiver,fax_receiver,country_receiver,zip_code_receiver) "
> i have added fields to the db for file (file_name and file_id)
strSQL = strSQL &"VALUES "
strSQL = strSQL &"('"&client_id&"', '"&xlSheet1.Cells.Item(i,1)&"','"&xlSheet1.Cells.Item(i,2)&"','"&xlSheet1.Cells.Item(i,3) &"'"
strSQL = strSQL &",'"&xlSheet1.Cells.Item(i,4)&"','"&xlSheet1.Cells.Item(i,5)&"','"&xlSheet1. Cells.Item(i,6)&"','"&xlSheet1.Cells.Item(i,7)&"','"&xlSheet1.Cells.Item(i,8)&"')"
Set objExec = Conn.Execute(strSQL)
Set objExec = Nothing
End IF
Next
xlApp.Application.Quit
Conn.Close()
Set Conn = Nothing
Set xlSheet1 = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
End If
Set mySmartUpload = Nothing
%>
我在数据库中添加了文件(文件名和文件id)的字段
strSQL=strSQL&“值”
strSQL=strSQL&“(“&client_id&“,”&xlSheet1.Cells.Item(i,1)&“,”&xlSheet1.Cells.Item(i,2)&“,”&xlSheet1.Cells.Item(i,3)&“”
strSQL=strSQL&“,”&xlSheet1.Cells.Item(i,4)和“,”&xlSheet1.Cells.Item(i,5)和“,”&xlSheet1.Cells.Item(i,6)和“,”&xlSheet1.Cells.Item(i,7)和“,”&xlSheet1.Cells.Item(i,8)和“)
设置objExec=Conn.Execute(strSQL)
设置objExec=Nothing
如果结束
下一个
xlApp.Application.Quit
康涅狄格州关闭
设置连接=无
设置xlSheet1=无
设置xlBook=Nothing
设置xlApp=Nothing
如果结束
设置mySmartUpload=Nothing
%>
存在的检查
如果要检查文件名是否存在,必须使用标准FilesystemObject
中的方法FileExists
(有关更多信息,请参阅)
那你该怎么办
If sFileName <> "" Then
Dim fullFilePath = Server.MapPath("excel/"&sFileName)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(filespec)) Then
//Rem Whatever you want to do here
End If
mySmartUpload.Files("file1").SaveAs(fullFilePath)
and so far...
如果是sFileName“”,则
Dim fullFilePath=Server.MapPath(“excel/”&sFileName)
模糊fso
设置fso=CreateObject(“Scripting.FileSystemObject”)
如果(fso.FileExists(filespec)),那么
//雷,你想在这里干什么都行
如果结束
mySmartUpload.Files(“file1”).SaveAs(fullFilePath)
到目前为止。。。
如果我理解您的问题,您希望将文件名保存为唯一,以避免覆盖
最好的方法是在保存之前检查文件是否存在于目标目录中。如果存在,则通过附加一些唯一的id(如时间戳)来更改文件名
要保存文件,请使用saveas方法
简而言之,saveas方法将使用指定的名称(完整路径)保存发布的文件。您介意重新格式化您的发布吗?阅读和理解你的文章是非常困难的。我建议你在提出问题时改进你的编辑。谢谢Rafael vor撰写这篇文章。我无法编辑它(无论我做不到什么)。
strFileName = PMSmartUpload.Files.Item(1).FileName
strFilePath = strFileDirectory & "\" & strFileName
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(strFilePath)) Then
''rename suffix for file
strDateExt = cstr(month(Date)) +cstr(day(Date))+cstr(year(Date)) +cstr(Hour(Now)) +cstr(Minute(Now)) +cstr(Second(Now))
strFileExtension =fso.GetExtensionName(strFileName)
strFileBaseName = fso.GetBaseName(strFileName)
strFileName = strFileBaseName+"_"+ strDateExt +"."+strFileExtension
End If
'response.write strFileDirectory&"\"&strFileName
PMSmartUpload.Files.Item(1).saveas strFileDirectory&"\"&strFileName