我正在尝试在 ColdFusion 站点上上传文件并收到以下错误:
“表单域 fileInput 不包含文件。”
文件连同一些文本值通过编辑页面上的表单提交。表单被提交给控制器中的“save”方法,该方法发送两个对fileService 的调用。文本值按预期传递,更新它们工作正常。当我转储 RC Scope 结构“fileInput”(我用来获取文件的输入的名称)显示为 [空字符串]。它根本没有显示在表单范围内。有没有人知道可能导致此问题的原因?有几个已回答的问题与使用 cffile(标签)的表单相关,但我正在处理的网站上的所有内容都使用 FileUpload(cfscript),所以我不确定如何在这里应用这些答案。
仅供参考 该站点使用框架一(FW/1 版本 4.1)作为其 MVC 框架。我正在使用 ColdFusion 2016。以下是正在使用的代码片段。
查看:Edit.cfm
<form action="#BuildURL( action='file.save' )#" name="filesForm" method="post" enctype="multipart/form-data">
<input id="file_id" name="file_id" type="hidden" value="#rc.file_id#">
<div class="form-group">
<label for="name">File Name</label>
<input type="text" class="form-control" id="name" name="name" placeholder="Enter File Name" value="#rc.name#">
</div>
<div class="form-group">
<label for="fileInput">File Upload</label>
<input type="file" id="fileInput" name"fileInput">
</div>
<div class="form-group">
<button type="submit" class="btn btn-primary" name="Submit">Save</button>
</div>
</form>
控制器:file.cfc
public void function edit(rc){
if (StructKeyExists(rc, 'file_id') && rc.file_id > 0){
var q = fileService.getFile(rc.file_id);
rc.file_id = q.file_id;
rc.name = q.name;
}
}
public void function save(required struct rc){
rc.file_id = variables.fileService.save(rc.file_id, rc.name);
param name = "rc.fileInput" default="";
rc.result = variables.fileService.uploadFile(file = "fileInput");
variables.fw.redirect(action='file.edit', append='file_id', queryString = "msg=updated");
}
服务:file.cfc
struct function uploadFile(required string file){
fileUploadResult = FileUpload(getTempDirectory(), arguments.file, "application/pdf", "MakeUnique");
}