2015-11-20 5 views
0

Этот код PHP работает, когда я использую HTML <input type="file">, но не тогда, когда я использую сценарий загрузки файла jQuery в самом низу.Загрузка файла jQuery не Загрузка

  1. Я считаю, что все .js & .css файлы учитываются и рабочие (проверено)
  2. Я считаю, что uploadUrl: 'doc_upload.php', fileInputName: 'UserFile' являются правильными. Не знаю, потому что ошибки не отображаются.
  3. Использование эхо getcwd();, я считаю, я использую правильные пути
  4. Я только загрузив 1 кб .TXT файл
  5. я не получаю никаких ошибок и все сообщения об ошибках и на увеличившихся

Одна вещь, которая также не работает, о которой я говорю, чтобы дать подсказку, заключается в загрузке & кнопок отмены рядом с именем файла, которые не отображаются, хотя щелчок на них действительно работает.

Echo'ing $ _POST ничего мне не показывает, но я думаю, что это javascript вещь; не уверен, поскольку я новичок (3 месяца).

PHP страница

$filename = $_FILES['userfile']['name']; 
    $tmpname = $_FILES['userfile']['tmpname']; 
    $filesize = $_FILES['userfile']['size']; 
    $filetype = $_FILES['userfile']['type']; 

    $fp = fopen($tmpname, 'r'); 
    $content = fread($fp, filesize($tmpname)); 
    $content = addslashes($content); 
    fclose($fp); 

    if(!get_magic_quotes_gpc()) { 

     $filename = addslashes($filename); 
    } 

    $filename = preg_replace('/[ ]/', '~', $filename); 

    $document_folder = $_SESSION['users_id']; 
    $destfile = "../_documents/".$document_folder."/".$_FILES['userfile']['name']; 
    move_uploaded_file($_FILES['userfile']['tmpname'], $destfile); 

HTML страницы

<link type="text/css" rel="Stylesheet" href="../jqx.base.css" /> 

<script type="text/javascript" src="../scripts/js/jquery-1.11.1.min.js"></script> 
<script type="text/javascript" src="../scripts/jqwidgets/jqxcore.js"></script> 
<script type="text/javascript" src="../scripts/jqwidgets/jqxbuttons.js"></script> 
<script type="text/javascript" src="../scripts/jqwidgets/jqxfileupload.js"></script> 

<script type="text/javascript"> 


     $(document).ready(function() { 
     $('#jqxFileUpload').jqxFileUpload({ width: 300, uploadUrl: 'doc_upload_jquery.php', fileInputName: 'userfile', autoUpload: true }); 
     }); 



    $('#jqxFileUpload').on('uploadStart', function (event) { 
      var fileName = event.args.file; 
      $('#log').prepend('Started uploading: <strong>' + fileName + '</strong><br />'); 
    }); 



    $('#jqxFileUpload').on('remove', function (event) { 
      var fileName = event.args.file; 
     $('#log').prepend('Removed file: <strong>' + fileName + '</strong><br />'); 

    }); 



    $('#jqxFileUpload').on('uploadEnd', function (event) { 
     var args = event.args; 
     var fileName = args.file; 
     var serverResponce = args.response; 
    }); 



</script> 


</head> 
<body> 
<div id="jqxFileUpload"> 
</div> 
<div id="log" style="margin-top: 20px;"></div> 
<br /> 
</body> 
</html> 
+0

Вы правильно записывали атрибут 'enctype' в тег' form'? –

+0

Из того, что я вижу, с моей стороны нет требования к форме. Из всех примеров, которые я видел, я не видел одного с тегом формы. И когда я добавляю тег формы, он разбивает jQuery. Спасибо ... – mdpalow

+0

проверьте наличие ошибок, проверьте свою консоль и убедитесь, что папка имеет права доступа к ней и что сеанс запущен. –

ответ

0

mdpalow -

Вы, вероятно, не получают каких-либо ошибок или выход из-за заявления, если в верхней части:

if (isset($_POST['submit']) && $_FILES['userfile']) { 

Попробуйте положить это на вершине, чтобы вывести все свои почтовые переменных, так что вы можете определить, что после переменные фактически направляются (если таковые имеются):

print_r($_POST); 

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

+0

В моем ОП я сказал, что не думаю, что я на самом деле $ _POST'ing, что, возможно, было подтверждено ответом, опубликованным выше. Я положил его снова за ваше предложение и оставил его там на данный момент, но пока ничего не показывал. – mdpalow

+0

, используя инструменты dev в хроме, была хорошей идеей. это показывает мне некоторые вещи. Я отключил часть php до минимального количества минут. и получение ошибки: Неопределенный индекс: tmpname. mdpalow

+0

Заканчивать документацию по $ _FILES глобальной здесь: http://php.net/manual/en/reserved.variables.files.php Я думаю, что индекс должен быть «tmp_name» вместо 'tmpname. – TheGrandPackard

0

Проблема заключается в том, что плагин jQuery загружает файл через AJAX. Чтобы устранить проблему, выполните следующие действия:

  • Храните свой код HTML и PHP в отдельных файлах.
  • В новом файле PHP удалите isset ($ _ POST ['submit']), так как нет представления.
+0

сделано. все ошибки, которые показывались, когда я вынул $ _POST, ушли, как только я отделил php от остальной части кода. Тем не менее, по-прежнему нет никакой магии в отношении любых загружаемых файлов. – mdpalow

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