2015-01-29 2 views
3
var file = $('#image').prop('files')[0]; 
    var filename = $('#af_rpta_propertyland_filename').val(); 

    var form_data = new FormData(); 
    form_data.append('file', file); 
    alert(form_data); 


    $.ajax({ 
     type: 'POST', 
     url: '../include/upload.php', 
     //dataType: "json", 
     data: { 
      file: form_data, 
      filename: filename 
     }, 
     success: function(data) { 
      console.log(data); 
      for (var i = 0; i < data.length; i++) { 
       console.log("file " + i + ": " + data[i].file); 
      } 

     }, 
     error: function(data) { 
      alert('No Record Found: ' + data); 
     } 


    }); 

<input id="image" name="image" type="file" />PDF загрузить файл Ajax HTML

В этом, как я загрузить файл в формате PDF с использованием Ajax в моем PHP кода я это сделать, как этот

$file = mysql_real_escape_string($_POST['file']); 
$filename = mysql_real_escape_string($_POST['filename']); 
    if (isset($_FILES['file']) && $_FILES['file']['size'] > 0) { 
       $tmpName = $_FILES['file']['tmp_name']; 
       $filetype = $_FILES['file']['type']; 
       $fp = fopen($tmpName, 'rb'); // read binary 
    $upload[] = array('filename' => $filename,'file' => $fp); 

    } 

echo json_encode($upload, JSON_UNESCAPED_UNICODE); 

С моей input(type file) как я могу поместить value(the pdf file) в data(in ajax) и от data(ajax) как я могу передать его в php-файл, чтобы я мог проверить, не 0: $_files

ответ

5

Попробуйте создать json объект из files[0] свойств, преобразование file в base64 строку

JS

$("#image").on("change", function(e) { 
    var name = $("#af_rpta_propertyland_filename").val() 
    , file = e.target.files[0] 
    , filename = name.length > 1 ? name + ".pdf" : file.name 
    , filetype = file.type 
    , filesize = file.size 
    , data = { 
     "filename":filename, 
     "filetype":filetype, 
     "filesize":filesize 
    } 
    , reader = new FileReader(); 
    reader.onload = function(e) { 
     data.file_base64 = e.target.result.split(/,/)[1]; 
     $.post("fileupload.php", {file:data}, "json") 
     .then(function(data) { 
      // parse `json` string `data` 
      var filedata = JSON.parse(data) 
      // do stuff with `data` (`file`) object 
      , results = $("<a />", { 
       "href": "data:" + filedata.filetype 
         + ";base64," + filedata.file_base64, 
       "download": filedata.filename, 
       "target": "_blank", 
       "text": filedata.filename 
       }); 
      $("body").append("<br>download:", results[0]); 
     }, function(jqxhr, textStatus, errorThrown) { 
      console.log(textStatus, errorThrown) 
     }) 
    }; 
    reader.readAsDataURL(file) 
}); 

PHP

<?php 
    if (isset($_POST["file"])) { 
    // do php stuff 
    // call `json_encode` on `file` object 
    $file = json_encode($_POST["file"]); 
    // return `file` as `json` string 
    echo $file; 
}; 

jsfiddle http://jsfiddle.net/guest271314/LL95z474/

+0

Я видел скрипку, и она работает, хотя это немного сложно для меня, я буду изучать ее и надеюсь, что я пойму ее, пожалуйста, со мной, если у меня возникнет вопрос. –

+0

В name.length> 1? name + ".pdf": file.name можно изменить «.pdf» на file.type, если я хочу, чтобы мой код был гибким? И еще один файл $ file будет тот, который я сохраню в базе данных правильно? чтобы направить действие на кнопку? –

+0

Я не могу понять код, который я копирую, вставьте код, и я до сих пор получаю сообщение об ошибке 'http: // localhost/echo/json/404 (Not Found)' также как сделать так, как оно будет идти от нажатия кнопки? –

4

Использование JQuery версии «Jquery-1,10. 2.min.js "

Используйте этот AJAX

$.ajax({ 
     url: "YourPage.php", 
     type: "POST",    
     data: new FormData('YourFormId'), 
     contentType: false,     
     processData:false,   
     success: function(data) 
     { 
      // Do your Stuff 
     } 
    }); 

На PHP страницу просто использовать эту линию

$name = $_FILES['file']['name']; 

В этом коде я использовал два новых события

  1. CONTENTTYPE
  2. ProcessData

Это необходимо, чтобы использовать их для загрузки и доступа всех данных в AJAX.

Надеюсь, это вам поможет.

+1

** new FormData ('YourFormId') ** также важно –

Смежные вопросы