Intereting Posts
Получить результат, основанный на распределении вероятностей Как я могу расшифровать зашифрованное значение MCRYPT_RIJNDAEL_256 в C #, которое было зашифровано mcrypt в PHP? php wordpress password change – внесите меня в журнал! Как перенаправить все после слэш в домен раньше? Как сделать первое веб-приложение REST API в Laravel .htaccess – запретить доступ к папке, но разрешить доступ к файлу через index.php PHP и MySQL удаляют проблему с несколькими скриптами строк не удалось удалить index.php с laravel url ?? в ubuntu 14.04 Laravel 5 Seeder – несколько рядов в DB Массив переупорядочения PHP для отображения иерархии родительских / идентификационных данных phpmyadmin в ошибке WAMP # 1045 – Необходимо сбросить пароль PHP Неопределенная константа PHP_ROUND_HALF_DOWN Рекурсивно сканирование файловой папки PHP, отсортированное по дате модификации Как загрузить файл с помощью PHP и Mysql DB PHP – PDO не принимает вмонтированный массив в качестве параметра вопроса вопроса для предложения IN в запросе SELECT

представить успех, но не загружать в комбинированную форму

При попытке комбинировать отправку и загрузку в одной форме у меня есть проблема с загрузкой, но для формы отправки это не проблема.

JQuery + Ajax:

$("#oqcsubmit").click(function() { if($("#oqc").valid()) { var params=$("#oqc").serialize(); $.ajax({ type:"post", url:"doinput.php", data:params, cache :false, async :false, success : function() { $(".dt").val(""); $(".stat").val(""); return this; }, error : function() { alert("Data failed to input."); } }); return false; } }); <form id="oqc" enctype="multipart/form-data" > <input type="text" id="mod" name="mod" class="dt"/> <input type="text" id="no" name="no" class="dt"/> <input id="filename" name="uploadedfile" type="file" /> <input type="submit" id="oqcsubmit" value="Submit" /> <input type="hidden" name="action" value="oqcdata" /> </form> 

PHP:

 $dbc=mysql_connect(_SRV,_ACCID,_PWD) or die(_ERROR15.": ".mysql_error()); $db=mysql_select_db("QPL",$dbc) or die(_ERROR17.": ".mysql_error()); $target_path = "data/"; $target_path = $target_path . basename( $_FILES['uploadedfile']['name']); //print_r($_FILES); if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { echo "The file ". basename( $_FILES['uploadedfile']['name']). " has been uploaded"; } else{ echo "There was an error uploading the file, please try again!"; } switch(postVar('action')) { case 'oqcdata' : oqcdata(postVar('mod'),postVar('no')); break; } function oqcdata($mod,$no) { $Model = mysql_real_escape_string($mod); $Serial = mysql_real_escape_string($no); //build query $sql = "INSERT INTO OQC (Model, Serial) VALUES ('".$Model."','".$Serial."')"; echo $sql; $result=mysql_query($sql) or die(_ERROR26.": ".mysql_error()); echo $result; mysql_close($dbc); 

как правильно разместить код загрузки на этой странице? так что оба могут работать. разрешение каталога: chmod 777 data


файл остается в форме после отправки (не отправляется). отставание файла


ОБНОВИТЬ

После перемещения кода загрузки перед переключением я получил ошибку:

 PHP Notice: Undefined index: uploadedfile 

это означает, что форма не отправляет значение uploadedfile . После проверки параметра нет uploadedfile файла. почему так происходит? даже это значение включено внутри формы и использует .serialize() .

 form data : mod:KD-R321ED no:177X1000 // where is the uploaded file value? action:oqcdata 

 PHP Notice: Undefined index: uploadedfile 

это означает, что форма не отправляет значение uploadedfile. После проверки параметра нет загруженного файла. почему так происходит?

Вы не можете загружать файлы поверх анимированных браузеров , таких как jQuery. Период, полная остановка, конец истории.

Если вы должны сделать загрузку без обновления страницы, общий трюк заключается в создании iframe и отправке формы на него. Другой трюк заключается в использовании экспериментального Файлового API , представленного как часть HTML5. Это может быть болью, чтобы справиться с собой, но она должна хорошо работать, если вы хотите сделать все это вручную.

Для этого я настоятельно рекомендую использовать сторонний файл для загрузки. Мне повезло с Plupload , но некоторые люди также рекомендуют Uploadify . Они могут оба по желанию использовать Flash или HTML5-сервер для выполнения загрузки, что также дает пользователям счастливый небольшой индикатор прогресса.

Вы должны использовать XHR2 для загрузки файлов через AJAX.

Пример :

Javascript / Clientside:

 function upload() { var fileInput = document.getElementById('file_input_upload'); var file = fileInput.files[0]; xhr = new XMLHttpRequest(); xhr.open('post', 'upload.php', true); xhr.setRequestHeader("Content-Type", "application/octet-stream"); xhr.setRequestHeader("Cache-Control", "no-cache"); xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest"); xhr.setRequestHeader("X-File-Name", file.name); xhr.setRequestHeader("X-File-Size", file.size); xhr.setRequestHeader("X-File-Type", file.type); xhr.send(file); } 

HTML:

 <input type="file" id="file_input_upload"/> <div onmousedown="upload()">Upload my file</div> 

PHP / Serverside (upload.php):

 $file_name = $_SERVER['HTTP_X_FILE_NAME']; $file_size = $_SERVER['HTTP_X_FILE_SIZE']; file_put_contents( "data/" . $file_name, file_get_contents("php://input") ); 

Это был простой пример без проверки ошибок. Поэтому, пожалуйста, не используйте этот код для использования в целях производства. И если вы хотите загружать большие файлы (в GB), вы должны использовать веб-мастеров

Вы можете использовать Uploadify для обработки загрузки файла. Он предлагает функцию обратного вызова onUploadSuccess . Откуда вы можете получить информацию о загруженном файле (имя файла, путь и т. Д.). Вы можете использовать эту информацию и обновить скрытое поле ввода в своей форме. А затем вы можете получить доступ к информации на стороне сервера и манипулировать ею.

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

Невозможно отправить входные данные файла только с помощью $ .ajax. Я успешно использовал плагин jQuery form http://malsup.com/jquery/form/ . Он переносит любую форму в обработку AJAX и добавляет много полезных вариантов обратного вызова. Он также делает некоторые умные вещи для обработки загрузки файлов. Для старых браузеров (которые не поддерживают XHR Level 2) могут быть некоторые незначительные дополнительные модификации на стороне сервера, но в остальном это работает из коробки.

Для конкретных документов по использованию формы jQuery для обработки загрузки файлов см. http://malsup.com/jquery/form/#file-upload

Лучше использовать простой способ, с отдельным процессом:

 $("#oqcsubmit").click(function() { if($("#oqc").valid()) { var params=$("#oqc").serialize(); $.ajax({ type:"post", url:"doinput.php", data:params, cache :false, async :false, success : function() { $(".dt").val(""); $(".stat").val(""); return this; }, error : function() { alert("Data failed to input."); } }); return false; } }); <form id="oqc"> <input type="text" id="mod" name="mod" class="dt"/> <input type="text" id="no" name="no" class="dt"/> <input type="submit" id="oqcsubmit" value="Submit" /> <input type="hidden" name="action" value="oqcdata" /> </form> <form enctype="multipart/form-data" action="uploader.php" method="POST"> Upload File: <input id="filename" name="uploadedfile" type="file" /> <input id="upload" type="submit" value="Upload File" style="display:none;"/> </form> . $("#oqcsubmit").click(function() { if($("#oqc").valid()) { var params=$("#oqc").serialize(); $.ajax({ type:"post", url:"doinput.php", data:params, cache :false, async :false, success : function() { $(".dt").val(""); $(".stat").val(""); return this; }, error : function() { alert("Data failed to input."); } }); return false; } }); <form id="oqc"> <input type="text" id="mod" name="mod" class="dt"/> <input type="text" id="no" name="no" class="dt"/> <input type="submit" id="oqcsubmit" value="Submit" /> <input type="hidden" name="action" value="oqcdata" /> </form> <form enctype="multipart/form-data" action="uploader.php" method="POST"> Upload File: <input id="filename" name="uploadedfile" type="file" /> <input id="upload" type="submit" value="Upload File" style="display:none;"/> </form> . $("#oqcsubmit").click(function() { if($("#oqc").valid()) { var params=$("#oqc").serialize(); $.ajax({ type:"post", url:"doinput.php", data:params, cache :false, async :false, success : function() { $(".dt").val(""); $(".stat").val(""); return this; }, error : function() { alert("Data failed to input."); } }); return false; } }); <form id="oqc"> <input type="text" id="mod" name="mod" class="dt"/> <input type="text" id="no" name="no" class="dt"/> <input type="submit" id="oqcsubmit" value="Submit" /> <input type="hidden" name="action" value="oqcdata" /> </form> <form enctype="multipart/form-data" action="uploader.php" method="POST"> Upload File: <input id="filename" name="uploadedfile" type="file" /> <input id="upload" type="submit" value="Upload File" style="display:none;"/> </form> . $("#oqcsubmit").click(function() { if($("#oqc").valid()) { var params=$("#oqc").serialize(); $.ajax({ type:"post", url:"doinput.php", data:params, cache :false, async :false, success : function() { $(".dt").val(""); $(".stat").val(""); return this; }, error : function() { alert("Data failed to input."); } }); return false; } }); <form id="oqc"> <input type="text" id="mod" name="mod" class="dt"/> <input type="text" id="no" name="no" class="dt"/> <input type="submit" id="oqcsubmit" value="Submit" /> <input type="hidden" name="action" value="oqcdata" /> </form> <form enctype="multipart/form-data" action="uploader.php" method="POST"> Upload File: <input id="filename" name="uploadedfile" type="file" /> <input id="upload" type="submit" value="Upload File" style="display:none;"/> </form> 

оба могут работать нормально, лучший способ – не делать сложный путь, если легко сделать это.

для загрузки файлов через ajax пройти этот URL-адрес ajax-файл для загрузки