2015-04-17 2 views
0

У меня есть веб-приложение, которое загружает файлы в файловую систему и отображает их в списке. Я пытаюсь удалить элемент с помощью кнопки. Я знаю, что нужно, чтобы получить путь к файлу каталога, чтобы иметь возможность удалить его, и я считаю, что это где я застрял:Попытка удалить загруженный файл из файловой системы каталога

def delete = { 

    def doc = Document.get(params.id) 
    def path = Document.get(path.id) 

    doc.delete(path) 

    redirect(action:'list') 
} 

ошибки я получаю: No such property: path for class: file_down.DocumentController Possible solutions: flash

Мне кажется def path = Document.get(path.id) неверно, в этом случае, как мы находим путь к документу?

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

def upload() { 
    def file = request.getFile('file') 
    if(file.empty) { 
     flash.message = "File cannot be empty" 
    } else { 
     def documentInstance = new Document() 
     documentInstance.filename = file.originalFilename 
     documentInstance.fullPath = grailsApplication.config.uploadFolder + documentInstance.filename 
     documentInstance.fileSize = file.getSize()/(1024 * 1024) 
     documentInstance.company = Company.findByName(params.company) 
     if (documentInstance.company == null) { 
      flash.message = "Company doesn't exist" 
      redirect (action: 'admin') 
     } 
     else { 
      file.transferTo(new File(documentInstance.fullPath)) 
      documentInstance.save() 
      redirect (action:'list', params: ['company': params.company]) 
     } 
    } 
} 
+0

'doc.fullPath' ? кто написал метод загрузки? – cfrick

+0

Я сделал @cfrick. И я пробовал doc.fullPath, он не работает – Mozein

ответ

1

Я думаю, что у Вас есть ошибка в этой строке:

def path = Document.get(path.id) 

Вы пытаетесь получить path.id из переменной пути, которую вы просто объявляете.

Я уверен, что вы имеете в виду

def path = new File(doc.fullPath) 

path.delete() // Remove the file from the file-system 

doc.delete() // Remote the domain instance in DB 

Альтернатива:

class Document { 
     // Add this to your Document domain 
     def beforeDelete = { 
      new File(fullPath).delete() 
     } 
} 

, а затем вы можете просто сделать это в вашем контроллере:

def delete = { 

    def doc = Document.get(params.id) 

    doc.delete() // Delete the domain instance in DB 

    redirect(action:'list') 
} 
+0

да, но также path = Document.get (doc.fullPath) – Mozein

+0

, если только у экземпляра документа нет метода удаления? – sbglasius

+0

это сработало? если да, то пожалуйста примите. – sbglasius

Смежные вопросы