2

我正在尝试在 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");
}
4

3 回答 3

1

原来问题出在文件输入标签中。我在名称声明(即)中省略了“等号” name="fileInput",这就是不包含该文件的原因。难以置信......在我修复它之后,其他一切都正常工作,尽管我会接受建议来清理命名。感谢大家的帮助。

于 2017-11-21T20:14:04.957 回答
0

您是否尝试转储 rc 范围变量以及您尝试上传的文件确保它不是空文本文件。

于 2017-11-17T18:16:56.387 回答
0

我对FW/1不熟悉,但可能在public void函数save()中,fileInput应该是rc.fileInput,即

 rc.result = variables.fileService.uploadFile(file = rc.fileInput);
于 2017-11-17T01:49:28.600 回答