Codeigniter: загрузка нескольких файлов
Я пробовал многократные загрузчики файлов, которые могут быть интегрированы с codeigniter как
- pulpload
- загрузка файла jquery
Даже при том, что они прекрасно работают в чистой среде php, я не мог заставить их работать в среде codeigniter. Я пробовал это в течение двух дней... пробовал много статей, которые были в github и блогах... Но я не мог сделать это в рамках codeigniter.. Если кто-то может сказать мне это шаг за шагом или если есть учебник для этого, Помогите мне, пожалуйста. Я новичок в Codeigniter..
Новое: я скачал плагин bluequ Jquery-File-Upload и перешел по этой ссылке как есть. https://github.com/blueimp/jQuery-File-Upload/wiki/Latest-jQuery-File-Upload-easy-integration-with-codeigniter
Когда я выбираю файл и нажимаю "загрузить" в Chrome, он говорит:
Error SyntaxError: Unexpected token <
В Firefox это говорит:
Error SyntaxError: SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
Я проверил разницу между использованием его на моем сервере и на демонстрационном сервере, на моем сервере в firebug возвращаемый POST - это весь index.html... но на демонстрационном сервере он возвращает данные JSON..
Вот модифицированный раздел js/main.js, который я изменил:
$(function () {
'use strict';
// Initialize the jQuery File Upload widget:
$('#fileupload').fileupload({
// Uncomment the following to send cross-domain cookies:
//xhrFields: {withCredentials: true},
url: 'upload/do_upload'
});
// Enable iframe cross-domain access via redirect option:
$('#fileupload').fileupload(
'option',
'redirect',
window.location.href.replace(
/\/[^\/]*$/,
'/cors/result.html?%s'
)
);
if (window.location.hostname === 'blueimp.github.io') {
// Demo settings:
$('#fileupload').fileupload('option', {
url: '//jquery-file-upload.appspot.com/',
// Enable image resizing, except for Android and Opera,
// which actually support image resizing, but fail to
// send Blob objects via XHR requests:
disableImageResize: /Android(?!.*Chrome)|Opera/
.test(window.navigator.userAgent),
maxFileSize: 5000000,
acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i
});
// Upload server status check for browsers with CORS support:
if ($.support.cors) {
$.ajax({
url: '//jquery-file-upload.appspot.com/',
type: 'HEAD'
}).fail(function () {
$('<div class="alert alert-danger"/>')
.text('Upload server currently unavailable - ' +
new Date())
.appendTo('#fileupload');
});
}
} else {
// Load existing files:
$('#fileupload').addClass('fileupload-processing');
$.ajax({
// Uncomment the following to send cross-domain cookies:
//xhrFields: {withCredentials: true},
url: $('#fileupload').fileupload('option', 'url'),
dataType: 'json',
context: $('#fileupload')[0]
}).always(function () {
$(this).removeClass('fileupload-processing');
}).done(function (result) {
$(this).fileupload('option', 'done')
.call(this, $.Event('done'), {result: result});
});
}
});
Единственное, что я изменил, это сделал index.html, чтобы действие формы указывало на мой скрипт (upload/do_upload)
1 ответ
контроллер
function add()
{
if(isset($_POST['submit']))
{
$length = count($_FILES['image']['name']);
$filename = $_FILES['image']['name'];
$tempname = $_FILES['image']['tmp_name'];
$allimage = array();
foreach($filename as $key =>$value)
{
move_uploaded_file($tempname[$key],'media/uploads/mobile_product/'
.$filename[$key]);
$allimage[] = $filename[$key];
}
if(!empty($allimage))
{
$allimage = json_encode($allimage);
}
else
{
$allimage = '';
}
$data['image'] = $allimage;
$this->db->insert('table_name',$data);
$this->session->set_flashdata('message','<div class="alert alert-success">Record has been successfully saved.</div>');
}
}