загрузить файл pdf ajax html

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 в моем 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-файл, чтобы я мог проверить, нет ли $_files пустой

Попробуйте создать объект 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/

Используйте версию 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. Тип содержимого
  2. данные обработки

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

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