как загрузить изображение из codeigniter в mysql - PullRequest
0 голосов
/ 11 июня 2019

Я новичок в CodeIgniter. Я не понимаю, как обновить данные формы в базе данных. Вставка и отображение данных из базы данных завершено, но я не понимаю, как обновить данные в базе данных.

Я пытался исследовать эту ссылку , но данные не были успешно загружены.

Это мой Контроллер

//npwp
$temp1 = explode(".", $_FILES['file_npwp']['name']);
$new_name1 = time().'.'.end($temp1);
$config1['upload_path'] = APPPATH.'/file_npwp/';
$config1['file_name'] = $new_name1;
$config1['overwrite'] = TRUE;
$config1['allowed_types'] = 'jpg|jpeg|png|pdf';
$this->load->library('upload',$config1);
$this->upload->initialize($config1);
if(!$this->upload->do_upload('file_npwp')){
$this->data['error'] = $this->upload->display_errors();

}
$media1 = $this->upload->data('file_npwp');

Это моя Модель

$data_service['file_npwp']= $file_lampiran1;
$data_service['file_ktp']= $file_lampiran2;
$data_service['file_po']= $file_lampiran3;
$data_service['file_registrasi']= $file_lampiran4;
$this->db->where('id_service',$this->input->post('id_service'));
$this->db->update('service_sis', $data_service);

Это мой Вид

<div class="form-group">
<label for="">File NPWP</label>
<input type="file" name="file_npwp" id="file_npwp" class="form-control">
</div>
<br>
<div id="hasilloadfoto"></div>
<br>
<p>*Pastikan semua form sudah terisi dengan benar</p>
<button id="SaveAccount" class="btn btn-success">Simpan</button>

Это мой Javascript на мой взгляд

$( function() {
var $signupForm = $( '#myForm' );
$signupForm.validate({errorElement: 'em'});
$signupForm.formToWizard({
submitButton: 'SaveAccount',
nextBtnName:  'Selanjutnya',
prevBtnName:  'Sebelumnya',
nextBtnClass: 'btn btn-primary btn-flat next',
prevBtnClass: 'btn btn-default btn-flat prev',
buttonTag:    'button',
validateBeforeNext: function(form, step) {
var stepIsValid = true;
var validator = form.validate();
$(':input', step).each( function(index) {
var xy = validator.element(this);
stepIsValid = stepIsValid && (typeof xy == 'undefined' || xy);
});
return stepIsValid;
},
progress: function (i, count) {
$('#progress-complete).width(''+(i/count*100)+'%');
}

});
});

function filePreview(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#hasilloadfoto + img').remove();
$('#hasilloadfoto').after('<img src="'+e.target.result+'" width="450" height="300"/>');
}
reader.readAsDataURL(input.files[0]);
}
}
$(document).ready(function(){
$("#file_npwp").change(functio () {
filePreview(this);
});

Нужна помощь в операции обновления. Я ценю любую помощь.

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

вы можете сделать двумя способами,

  1. Вы можете загрузить изображение в любое облачное хранилище (Aws, Azure и т. Д.), А затем обновить ссылку на вашем Db
  2. Преобразуйте изображение в base64 и обновите его как строку в вашей БД.

Я предпочту перейти к первому шагу, у меня есть пример, где я загрузил его в Azure и обновил свою базу данных

// Это на Js, используя ajax, отправлю на контроллер функция uploadImage () {

    var base_url = '<?php echo BASEURL ?>';
    // call ajax to upload image
    //event.preventDefault();
    var file_data = $('#post-image').prop('files')[0];
    var form_data = new FormData();
    form_data.append('uploaded_file', file_data);
    $.ajax({
        url: base_url + "dashboard/uploadImage",
        dataType: 'json',
        cache: false,
        contentType: false,
        processData: false,
        data: form_data,
        type: 'post',
        success: function (aData) {

        },
        error: function (data) {
            alert(data);
        }
    });

}

На контроллере,

публичная функция uploadImage () {

// получаем ключ 'api-key' из заголовка запроса

    $data = array();
    if (isset($_FILES ['uploaded_file']['name']) && !empty($_FILES ['uploaded_file']['name'])) {
        $userId = $this->input->post("userId");


        $file_name = $userId . "_" . uniqid() . ".jpg";
        $S3ImgUrl = uploadImageToS3($_FILES ['uploaded_file']['tmp_name'], "app_feed_images", $file_name);


        $data = array(
            'code' => 555,
            'message' => 'Image has been uploaded successfully',
            'url' => $S3ImgUrl
        );
    } else {
        $data['code'] = -111;
        $msg = "failed to upload image to s3";
        $data ['status'] = $this->failed_string;
    }

// var_dump ($ data); echo json_encode ($ data); }

класс помощников

функция uploadImageToS3 ($ tmp, $ bucket, $ file_name) {

$connectionString = "DefaultEndpointsProtocol=https;AccountName=" . azure_bucket_name . ";AccountKey=" . azure_bucket_key;
$blobClient = MicrosoftAzure\Storage\Blob\BlobRestProxy::createBlobService($connectionString);
$containerName = "app-image/" . $bucket;
$containerUrl = "https://hbimg.blob.core.windows.net/";

$content = fopen($tmp, "r");
$options = new MicrosoftAzure\Storage\Blob\Models\CreateBlockBlobOptions();
$content_type = $_FILES['uploaded_file']['type'];
$options->setContentType($content_type);
$blobClient->createBlockBlob($containerName, $file_name, $content, $options);
return $containerUrl . $containerName . "/" . $file_name; }

На стороне контроллера, я только что загрузил изображение, вы можете назвать класс модели с помощью ссылки на загруженное изображение и обновить данные в вашей БД.

Удачного кодирования:)

0 голосов
/ 11 июня 2019

Все, что вам нужно, это отправить имя фотографии в базу данных, а затем в модель, которую вы должны добавить

$this->input->post('databse_column_name')=$variable_name_which_content_file_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...