Невозможно удалить файл, используя метод ASP DeleteFile - PullRequest
1 голос
/ 21 декабря 2011

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

PhotoFile = "\images\networkPartners\" & rs(fieldName)
PhotoPath = Server.MapPath(PhotoFile)
dim ServerFSO
Set ServerFSO=Server.CreateObject("Scripting.FileSystemObject")
if ServerFSO.FileExists(PhotoPath) then
    response.Write(PhotoPath)

    ServerFSO.DeleteFile(PhotoPath)
end if
set ServerFSO=nothing

Когда откроется файл response.write, я получаю фактический путь к файлу. («C: / web / images» и т. Д.) Вплоть до имени файла. Вся капитализация правильная и так далее. Опять же, никаких ошибок вообще нет, когда я делаю «при появлении ошибки далее» и выписываю номер ошибки и строку.

Призвание:

    ServerFSO.DeleteFile(PhotoPath, true)

приводит к ошибке:

Microsoft VBScript compilation error '800a0414'

Cannot use parentheses when calling a Sub

/folder/file_edit.asp, line 32

ServerFSO.DeleteFile(PhotoPath, true)
-------------------------------------^

Ответы [ 3 ]

5 голосов
/ 21 декабря 2011

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

FileSystemObject.DeleteFile filename, true 

это приведет к удалению файла только для чтения.

1 голос
/ 22 декабря 2011

Мое тестирование этого примера кода показывает, что скобки работают в этом примере.

<%
Set fs=Server.CreateObject("Scripting.FileSystemObject")
Set fo=fs.GetFolder("c:\")
Set tfile=fo.CreateTextFile("test.txt",true)
tfile.WriteLine("Hello World!")
tfile.Close
if fs.FileExists("c:\test.txt") then
  fs.DeleteFile("c:\test.txt")
end if
set tfile=nothing
set fo=nothing
set fs=nothing
%>

Однако произойдет сбой при добавлении параметра силы:

<%
Set fs=Server.CreateObject("Scripting.FileSystemObject")
Set fo=fs.GetFolder("c:\")
Set tfile=fo.CreateTextFile("test.txt",true)
tfile.WriteLine("Hello World!")
tfile.Close
if fs.FileExists("c:\test.txt") then
  fs.DeleteFile("c:\test.txt",True)
end if
set tfile=nothing
set fo=nothing
set fs=nothing
%>
0 голосов
/ 03 июля 2012

Должно работать без скобок

DeleteFile "c:\test.txt",True

но есть какая-то папка, которая защищена, и вам нужно работать от имени администратора. Я не знаю, как сделать это с помощью скрипта, потому что у него нет выбора «запустить как» в контекстном меню.

...