2016-08-01 8 views
3

Dies ist mein HTML-Code für das Bildfeld:Bild zu PHP-Datei mit Ajax ohne Formdata() verwenden

<div class="row input_detail"> 
    <div class="col-lg-4 col-md-4 "> 
     <label>Upload Image:</label> 
    </div> 
    <div class="col-lg-8 col-md-8"> 
     <input type="file" id="picture" name="pro_picture"/> 
    </div> 
</div> 

Und ich bin mit jQuery.post() für Ajax-Request. Ich entwerfe ein WP-Plugin, in dem ich ein Bild für den sich registrierenden Benutzer hochladen möchte.

+0

Verwendung versteckten Iframes, wenn Sie nicht wollen, Formdata() – madalinivascu

+0

Aus welchem ​​Grund verwenden, die Sie nicht wollen Formdata benutzen? Dies ist die einzige Möglichkeit, eine AJAX-Anfrage zu erstellen, die Binärdaten sendet. Ihre Alternative ist ein versteckter Rahmen oder eine Standard-POST-Anfrage. –

+0

Ich verwende kein Formular-Tag in meiner wp-Seite und sende die Details auf die 'Klick'-Aktion des Absenden-Buttons. Ich möchte die Bildupload-Funktionalität hinzufügen. – Annapurna

Antwort

0
var image=""; 
$("#picture").on('change',function(){ 
    if (this.files && this.files[0]) { 
     var FR= new FileReader(); 
     FR.onload = function(e) {  
      image=e.target.result; 
     } 
     FR.readAsDataURL(this.files[0]); 
    } 
}); 
$.ajax({ 
    url: '<?php echo $this->getUrl("*/*/upload/id/" . $this->getRequest()->getParam('id')) ?>', // change it to your image handle controller 
    type: 'POST', 
    data: {"image":image}, 
    cache: false, 
    processData: false, 
    contentType: false, 
    success: function(data, status, xhr) {        
      //do your stuff    
    }, 
    error: function(xhr, status, error) {      
     console.log('Error saving the images to database: ' + status);      
    } 
}); 

Sie müssen die Post-ID in die wp_insert_attachment-Funktion einfügen.

$upload_dir = wp_upload_dir(); 
    $filename = 'sample.jpg';    
    if(wp_mkdir_p($upload_dir['path'])) { 
     $file = $upload_dir['path'] . '/' . $filename; 
    } else { 
     $file = $upload_dir['basedir'] . '/' . $filename; 
    }      
    $base64img = str_replace('data:image/jpeg;base64,', '', $_POST['image']); 
    $img_data = base64_decode($base64img); 
    $validate_image = imagecreatefromstring($img_data); 
    if($validate_image !== false){  
     imagedestroy($validate_image);  
     file_put_contents($file, $img_data); 
     $wp_filetype = wp_check_filetype($filename, null);    
     $attachment = array(
      'post_mime_type' => $wp_filetype['type'], 
      'post_title'  => sanitize_file_name($filename), 
      'post_content' => '', 
      'post_status' => 'inherit' 
     );  
     $attach_id = wp_insert_attachment($attachment, $file, 'put the post id here');    
     require_once(ABSPATH . 'wp-admin/includes/image.php');   
     $attach_data = wp_generate_attachment_metadata($attach_id, $file);    
     wp_update_attachment_metadata($attach_id, $attach_data); 
Verwandte Themen