сохранить файл в БД с уникальным именем или идентификатором с asp classic - PullRequest
0 голосов
/ 16 января 2012

Я новичок в asp, мой код работает абсолютно нормально, но я столкнулся с двумя проблемами, хотя эти проблемы не влияют на приложение.Я просто хочу придать приложению хорошую функциональность.

Когда я загружаю файл Excel, если файл с таким именем уже существует, я перезаписываю его;если я вручную изменяю имя файла, то файл сохраняется с новым именем.

Что я хочу сделать:

  1. сохранить этот новый файл с уникальным именем или новым именем,Я не знаю, как это сделать.

  2. сохранить этот файл в БД с информацией о пользователе для входа (для дальнейшего использования)

Я надеюсь, что мои проблемы будут решены.большое спасибо

это URL, по которому я получил помощь ..

КОД

upload_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>

upload_excel_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
%>

Ответы [ 2 ]

0 голосов
/ 08 июня 2012

Если я понимаю ваш вопрос, вы хотите сохранить файл с именем файла как уникальный, чтобы избежать перезаписи.

Лучший способ - проверить перед сохранением, существует ли файл в каталоге назначения или нет.Если он существует, измените имя файла, добавив уникальный идентификатор, такой как отметка времени.

Для сохранения файла используйте метод saveas .

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

Короче говоря, метод saveasсохранить опубликованный файл с указанным именем (полный путь)

0 голосов
/ 17 января 2012

Проверка существования

Если вы хотите проверить, существует ли уже имя файла, вы должны использовать метод FileExists из стандартного FilesystemObject (дополнительную информацию см. http://msdn.microsoft.com/en-us/library/x23stk5t(v=VS.85).aspx).

Так что же нужно делать?

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...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...