php - Codeigniter 上传多张图片
问题描述
我有一个表单包含用于图像上传的多个输入。它是一个 jQuery 文件上传库,我如何使用不同的文件输入上传多个图像。 我不想使用单一输入来选择多个文件。 每张图片都应该从不同的输入上传。
这是我的 HTML
<label>Upload Question Image</label>
<div id="questionImageUploader">Upload Question Image</div>
<br>
<label>Upload Option A Image</label>
<div id="questionOptionAUploader">Upload Option A Image</div>
<br>
<label>Upload Option B Image</label>
<div id="questionOptionBUploader">Upload Option B Image</div>
<br>
<label>Upload Option C Image</label>
<div id="questionOptionCUploader">Upload Option C Image</div>
<br>
<label>Upload Option D Image</label>
<div id="questionOptionDUploader">Upload Option D Image</div>
这是触发上传的脚本。
请注意,我使用相同的 url 上传所有文件。只需帮助我处理我的 php 文件,我将如何在那里获取所有这些文件,因为每个文件都有不同的名称。
<script type="text/javascript">
var testSelected = false;
var testCatgeorySelected = false;
var checkFilesUploaded = false;
var questionImageFileUploadStatus = false;
var optionAFileUploadStatus = false;
var optionBFileUploadStatus = false;
var optionCFileUploadStatus = false;
var optionDFileUploadStatus = false;
// UPLOAD QUESTION IMAGE
var questionImageUploader = $('#questionImageUploader').uploadFile({
url:"admin/teaching-test/TeachingTest/insert_question",
fileName: "questionImage",
multiple:false,
maxFileCount:1,
showAbort:true,
showPreview:true,
previewHeight: "120px",
previewWidth: "90px",
autoSubmit:false,
dynamicFormData: function()
{
var data ={
'questionEng':$('#questionEng').val(),
'questionHindi':$('#questionHindi').val(),
'questionOptionAEng':$('#questionOptionAEng').val(),
'questionOptionBEng':$('#questionOptionBEng').val(),
'questionOptionCEng':$('#questionOptionCEng').val(),
'questionOptionDEng':$('#questionOptionDEng').val(),
'questionOptionAHindi':$('#questionOptionAHindi').val(),
'questionOptionBHindi':$('#questionOptionBHindi').val(),
'questionOptionCHindi':$('#questionOptionCHindi').val(),
'questionOptionDHindi':$('#questionOptionDHindi').val(),
'correctAnswerEng':$('#correctAnswerEng').val(),
'correctAnswerHindi':$('#correctAnswerHindi').val()
}
return data;
},
onSuccess:function(files,data,xhr,pd)
{
checkFilesUploaded = true;
questionImageFileUploadStatus = true;
},
onError: function(files,status,errMsg,pd)
{
checkFilesUploaded = false;
questionImageFileUploadStatus = false;
swal('Image Uploading','Question Image uploading failed Contact Developer','error');
}
});
// UPLOAD OPTION A IMAGE
var OptionAImageUploader = $('#questionOptionAUploader').uploadFile({
url:"admin/teaching-test/TeachingTest/insert_question",
fileName: "optionAImage",
multiple:false,
maxFileCount:1,
showAbort:true,
showPreview:true,
previewHeight: "120px",
previewWidth: "90px",
autoSubmit:false,
dynamicFormData: function()
{
var data ={
'questionEng':$('#questionEng').val(),
'questionHindi':$('#questionHindi').val(),
'questionOptionAEng':$('#questionOptionAEng').val(),
'questionOptionBEng':$('#questionOptionBEng').val(),
'questionOptionCEng':$('#questionOptionCEng').val(),
'questionOptionDEng':$('#questionOptionDEng').val(),
'questionOptionAHindi':$('#questionOptionAHindi').val(),
'questionOptionBHindi':$('#questionOptionBHindi').val(),
'questionOptionCHindi':$('#questionOptionCHindi').val(),
'questionOptionDHindi':$('#questionOptionDHindi').val(),
'correctAnswerEng':$('#correctAnswerEng').val(),
'correctAnswerHindi':$('#correctAnswerHindi').val()
}
return data;
},
onSuccess:function(files,data,xhr,pd)
{
checkFilesUploaded = true;
optionAFileUploadStatus = true;
},
onError: function(files,status,errMsg,pd)
{
checkFilesUploaded = false;
optionAFileUploadStatus = false;
swal('Image Uploading','Option A Image uploading failed Contact Developer','error');
}
});
</script>
这是我的 php(codeigniter) 文件。
public function insert_question()
{
$config['upload_path'] = realpath(FCPATH.'/teaching_test/');
$config['allowed_types'] = 'jpg|jpeg|gif';
$config['max_size'] = '10000000';
$config['overwrite'] = TRUE;
$config['encrypt_name'] = FALSE;
$config['remove_spaces'] = TRUE;
if ( ! is_dir($config['upload_path']) ) die("THE UPLOAD DIRECTORY DOES NOT EXIST");
$this->load->library('upload', $config);
$this->upload->initialize($config);
// just geting one file with name questionImage how can i get other files here.
if ( ! $this->upload->do_upload('questionImage')) {
echo 'error';
} else {
// GET DATA FROM POST
$questionArray = array(
'questionTestCategory' => $this->input->post('teachingCategorySelect'),
'questionTestID' => $this->input->post('testSelect'),
'questionEng' => $this->input->post('questionEng'),
'questionHindi' => $this->input->post('questionHindi'),
'questionOptionAEng' => $this->input->post('questionOptionAEng'),
'questionOptionBEng' => $this->input->post('questionOptionBEng'),
'questionOptionCEng' => $this->input->post('questionOptionCEng'),
'questionOptionDEng' => $this->input->post('questionOptionDEng'),
'questionOptionAHindi' => $this->input->post('questionOptionAHindi'),
'questionOptionBHindi' => $this->input->post('questionOptionBHindi'),
'questionOptionCHindi' => $this->input->post('questionOptionCHindi'),
'questionOptionDHindi' => $this->input->post('questionOptionDHindi'),
'correctAnswerEng' => $this->input->post('correctAnswerEng'),
'correctAnswerHindi' => $this->input->post('correctAnswerHindi'),
'test_type_id' => 1
);
print_r($questionArray);
}
}
解决方案
推荐阅读
- flutter - 如何在 Play/App Store 中以编程方式更新 Flutter 应用程序?
- gradle - 为 Gradle Multi Project Build 中的所有子项目指定通用插件
- c++ - RapidXML - 代码产生意想不到的结果
- codeigniter - 在 Windows 上本地运行 CodeIgniter 项目
- c - 为什么当我尝试读取文件时文件变为空?
- java - Spring Cloud Task Launcher 不响应发送给 Rabbit 的新事件
- c++ - 为什么在使用带有大 _Size 的 memset 时出现访问写入冲突?
- c# - 为什么不能将 Console.ReadKey() 放在显示到控制台的文本前面,或者将 Console.ReadKey() 分配给变量?
- bazel - 如何使用 java_common.compile.annotation_processor_additional_outputs 生成声明的文件和目录?
- discord.js - DiscordJS 后门命令