2015-11-20 57 views
0

当我使用HTML <input type="file">时,该PHP代码有效,但当我在底部使用jQuery文件上传脚本时,该代码不起作用。jQuery文件上传不上传

  1. 我相信所有的.js & .css文件被占和工作(测试)
  2. 我相信的uploadURL: 'doc_upload.php',fileInputName: 'userfile的' 是正确的。不知道因为没有错误显示。
  3. 使用回声getcwd();,我相信我用正确的路径
  4. 我只上传1kb的.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

您是否在'form'标签中正确编写了'enctype'属性? –

+0

从我所看到的,我没有任何形式要求。在我见过的所有例子中,我没有看到一个带有表格标签的例子。而且,当我添加表单标签时,它会打破jQuery。谢谢... – mdpalow

+0

检查错误,检查您的控制台,并确保该文件夹具有写入权限的权限,并且会话已启动。 –

回答

0

mdpalow -

你可能不会在顶部得到,因为if语句的任何错误或输出:

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

试试把这个顶部输出所有您的帖子变量,让你能确定实际发送的是什么职位变量(如果有的话):

print_r($_POST); 

我已经做了文件上传过,但没有与此特定库 - 我猜测是它只是发送多个数据而不是POST变量。查看浏览器开发人员工具中的预览标题也会发现哪些数据正在发送。

+0

在我的OP中,我说我不认为我实际上是$ _POST'ing,这可能已通过上面发布的答案得到证实。我根据你的建议再次把它放进去,现在就离开它,但仍然没有显示。 – mdpalow

+0

在chrome中使用开发工具是个好主意。它向我展示了一些东西。我已经剥去了PHP部分裸露分钟。并出现错误:未定义的索引:tmpname。 <?php session_start(); if($ _FILES ['userfile'] ['size'] <1024000){ \t \t $ tmpname = $ _FILES ['userfile'] ['tmpname']; \t \t $ document_folder = $ _SESSION ['users_id']; \t \t $ destfile =“../_documents/".$document_folder."/"._FILES['userfile']['name']; move_uploaded_file($ _FILES ['userfile'] ['tmpname'],$ destfile); } \t \t print_r($ _ FILES); ? > – 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

完成。当我将PHP从其余代码中分离出来时,我拿出$ _POST时显示的所有错误都消失了。但是,对于上传的任何文件而言,仍然没有任何魔力。 – mdpalow