试图从目录文件系统中删除上传的文件

Trying to delete a uploaded file from directory file system

我有一个网络应用程序可以将文件上传到文件系统并在列表中显示它们。我正在尝试使用按钮删除该项目。我知道我需要获取目录文件的路径才能删除它,我相信这就是我被困的地方:

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)是错误的,那么我们如何找到文件的路径呢?

这是我上传文件的上传方法,将其分配给特定的文件大小、日期和完整路径(即上传的文件夹)

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])
        }
    }
}

我认为你在这一行中有错误:

  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' )
}