Я пытаюсь загрузить файл на сайт ColdFusion и получаю следующую ошибку:
"Поле формы fileInput не содержит файла."
Файл вместе с некоторыми текстовыми значениями отправляется через форму на странице редактирования. Форма передается методу «сохранить» в контроллере, который отправляет два вызова в fileService. Текстовые значения передаются, как и ожидалось, и их обновление работает нормально. Когда я выгружаю структуру RC Scope, «fileInput» (имя ввода, которое я использую для получения файла) отображается как [пустая строка]. Он вообще не отображается в области формы. Кто-нибудь знает, что может быть причиной проблемы с этим? Есть несколько ответов на вопросы, связанные с формами, которые используют cffile (теги), но все на сайте, над которым я работаю, использует FileUpload (cfscript), поэтому я не уверен, как применить эти ответы здесь.
К вашему сведению, сайт использует Framework One (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>
Контроллер: файл.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");
}
Сервис: файл.cfc
struct function uploadFile(required string file){
fileUploadResult = FileUpload(getTempDirectory(), arguments.file, "application/pdf", "MakeUnique");
}
file.cfc
. Попробуйте дать ему другое имя. То же самое касаетсяarguments.file
. Интересно, не наступают ли разные значенияfile
друг на друга. 2) В краткосрочной перспективе попробуйте перенести код из службы в контроллер. - person James A Mohler   schedule 17.11.2017result = fileUpload(getTempDirectory(), "fileInput", "application/pdf", "MakeUnique");
- person Michael George   schedule 17.11.2017.cfm
в представление. Позже разделите его на представление и контроллер. Наконец просмотр, контроллер, сервис - person James A Mohler   schedule 18.11.2017