jQuery文件上传不上传

时间:2015-11-20 16:53:09

标签: javascript php jquery

当我使用HTML <input type="file">时,这个PHP代码可以正常工作,但是当我在最底层使用jQuery文件上传脚本时却不行。

  1. 我相信所有.js&amp; .css文件已计算并正在运行(已测试)
  2. 我相信 uploadUrl:'doc_upload.php', fileInputName:'userfile'是正确的。不知道'因为没有错误显示。
  3. 使用echo getcwd();,我相信我正在使用正确的路径
  4. 我只上传了1 kb .TXT文件
  5. 我没有收到任何错误,所有错误报告都已启用并且已达到最大值
  6. 有一件事也是行不通的,我说的可能是一个线索,就是上传&amp;文件名旁边的取消按钮没有显示全部,但点击它们似乎确实有效。

    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>
    

2 个答案:

答案 0 :(得分:0)

mdpalow -

由于顶部的if语句,您可能无法获得任何错误或输出:

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

尝试将它放在顶部以输出所有的帖子变量,以便您可以确定实际发送的帖子变量(如果有的话):

print_r($_POST);

我之前已经完成了文件上传,但没有使用这个特定的库 - 我的猜测是它只是发送mulipart数据而不是POST变量。查看浏览器开发人员工具中的预览标题也可以了解正在发送的数据。

答案 1 :(得分:0)

问题是jQuery插件通过AJAX上传文件。要解决此问题,请按照以下步骤操作:

  • 将HTML和PHP代码保存在单独的文件中。
  • 在新的PHP文件中删除isset($ _ POST [&#39; submit&#39;])验证,因为没有提交。