Asp classic 使用asp classic以唯一的名称或id在数据库中保存文件

Asp classic 使用asp classic以唯一的名称或id在数据库中保存文件,asp-classic,Asp Classic,我是asp新手,我的代码运行得非常好,但我面临两个问题,尽管这些问题不会影响应用程序。我只想在逻辑上为应用程序提供良好的功能 当我上传excel文件时,如果同名文件已经存在,我会覆盖它;如果我手动更改文件名,则文件将以新名称保存 我想做的是: 使用唯一名称或新名称保存此新文件,我不知道如何执行此操作 使用登录用户信息将此文件保存在数据库中(供将来参考) 我希望我的问题能得到解决。非常感谢 代码 上传excel.asp < form action="upload_excel_process

我是asp新手,我的代码运行得非常好,但我面临两个问题,尽管这些问题不会影响应用程序。我只想在逻辑上为应用程序提供良好的功能

当我上传excel文件时,如果同名文件已经存在,我会覆盖它;如果我手动更改文件名,则文件将以新名称保存

我想做的是:

  • 使用唯一名称或新名称保存此新文件,我不知道如何执行此操作

  • 使用登录用户信息将此文件保存在数据库中(供将来参考)

  • 我希望我的问题能得到解决。非常感谢

    代码 上传excel.asp

    < 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>
    
    <%mem\u id=会话(“mem\u id”)%%>
    上载\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