仅将文件上传到特定参数

upload files to a specific parameter only

我正在将文件上传到列表中。但是我希望能够指定我正在上传的参数,所以下次我访问它时,我只会看到我上传到该路径的文件:

例如我有这个下拉菜单:

<ul class="dropdown-menu" role="menu">
    <li><g:link controller='Document' action='list' params='[fruit:"apple"]'>apple</g:link></li>
    <li><g:link controller='Document' action='list' params='[fruit:"blueberry"]'>bluberry</g:link></li>
    <li><g:link controller='Document' action='list' params='[fruit:"strawberry"]'>strawberry</g:link></li>
    <li class="divider"></li>
    <li><g:link resource="gm">v4sa</g:link></li>
</ul>

如果我点击苹果。然后我上传一个文件。我希望只能看到 params.fruit == apple

的那些文件

这意味着仅在 URL 中:http://localhost:8080/file_down/document/list?fruit=apple

如果我去蓝莓的URL,我也可以上传文件,但是在列表中我只能看到为蓝莓上传的文件:

这是我的上传控制器:

class DocumentController {

    def index = {
        redirect(action: "list", params: params)
    }

    def list() {
        params.max = 10
        [documentInstanceList: Document.list(params), documentInstanceTotal: Document.count()]
    }


    def upload() {
        def uploadedFile = request.getFile('file')
        if(uploadedFile.isEmpty())
        {
            flash.message = "File cannot be empty"
        }
        else
        {
            def documentInstance = new Document()
            documentInstance.filename = uploadedFile.originalFilename
            //fileSize
            documentInstance.fileSize = uploadedFile.size
            documentInstance.fileSize = documentInstance.fileSize/(1024*1024)
            documentInstance.fullPath = grailsApplication.config.uploadFolder + documentInstance.filename
            uploadedFile.transferTo(new File(documentInstance.fullPath))
            documentInstance.save()
        }
        redirect (action: 'list')
    }
}

这是我的 list.gsp,它显示了 table 中的文件,所有不同的参数和相同的 gsp 页面都是相同的 table,只是显示不同文件 :

<tbody>
    <g:each in="${documentInstanceList}" status="i" var="documentInstance">
    <tr class="${(i % 2) == 0 ? 'even' : 'odd'}">
        <td><g:link action="download" id="${documentInstance.id}">${documentInstance.filename}</g:link></td>
        <td><g:link id="${documentInstance.id}">${documentInstance.fileSize}MB</g:link></td>
        <td><g:formatDate date="${documentInstance.uploadDate}" /></td>
        <td><span class="button"><g:actionSubmit class="delete" controller="Document" action="delete" value="${message(code: 'default.button.delete.label', default: 'Delete')}" onclick="return confirm('${message(code: 'default.button.delete.confirm.message', default: 'Are you sure?')}');" /></span></td>
    </tr>
    </g:each>
</tbody>

我应该怎么做才能仅上传到一个特定参数并仅在该参数处显示?

编辑 这是我的上传表格:

<g:uploadForm action="upload" enctype="multipart/form-data">
                <fieldset class="form">
                    <input type="file" name="file" />
                </fieldset>
                <fieldset class="buttons">
                    <g:submitButton name="upload" class="save" value="upload" />
                    <g:hiddenField name="fruit" value="${params.fruit?: 'defaultValue'}" />
                </fieldset>
            </g:uploadForm>

如果你通过表单上传文件,那么添加水果名称的隐藏字段:

<g:hiddenField name="fruit" value="${params.fruit ?: 'defaultValue'}"/>

如果按ajax,则添加到数据参数:

data:{file:file, fruit:"${params.fruit ?: defaultValue}",..

defaultValue 需要解决错误。祝你好运:)