仅将文件上传到特定参数
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 需要解决错误。祝你好运:)
我正在将文件上传到列表中。但是我希望能够指定我正在上传的参数,所以下次我访问它时,我只会看到我上传到该路径的文件:
例如我有这个下拉菜单:
<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 需要解决错误。祝你好运:)