用jquery上传文件

时间:2011-07-26 14:46:16

标签: php ajax file upload

我想上传一个带有ajax的文件

这是我的代码 php,html:

<form action="uploadVideo.php" method="POST" enctype="multipart/form-data">  
    <input type="file" name="choosefilebtn" id="choosefilebtn"  size="50" /> 
    <input type="button" class="uploadbutton" value="upload" name="uploadbtn" id="uploadbtn" />     
</form>

jquery的:

$(function() {
    $('#uploadbtn').click(function() {
        var filename = $('#choosefilebtn').val();
        alert(filename);
        $.ajax({
            type: "POST",
            url: "uploadVideo.php",
            enctype: 'multipart/form-data',
            data: {
                file: filename
            },
            success: function() {
                alert("Data Uploaded: ");
            }
        });
    });
});

当我使用类型sumbmit上传按钮(没有ajax)它可以工作,但是使用ajax它不起作用,任何身体可以帮助我, 感谢


修改 添加了uploadVideo.php代码

$publish->remotehost=$ftpremotehost;
$publish->username=$ftpusername;
$publish->password=$ftppassword;
$publish->remotedir=CONSTANT_SERVERROOT.$folderName;
$publish->filename=$_FILES['choosefilebtn']['name'];
$publish->FTPLogin();
$publish->filecontent = fread( fopen($_FILES['choosefilebtn']['tmp_name'], "rb"), 
                                     $_FILES['choosefilebtn']['size']);
$publish->makedir($publish->remotedir);
$result=$publish->Publish();

2 个答案:

答案 0 :(得分:4)

你会注意到ajax调用你发送文件名,而不是该文件的内容:

    $.ajax({
        //...
        data: {
            file: filename //just a name, no file contents!
        },
        //...
    });

我知道通过ajax发送文件数据的唯一方法是使用隐藏的iframe并向其提交表单

即。有

<iframe style="display: none" id="formtarget" />
<form action="uploadVideo.php" method="POST"  enctype="multipart/form-data"
    target="formtarget">  
    <input type="file" name="choosefilebtn" id="choosefilebtn"  size="50" /> 
    <input type="button" class="uploadbutton" value="upload" name="uploadbtn" id="uploadbtn" />     
</form>

答案 1 :(得分:0)

标记

<form action="processupload.php" method="post" enctype="multipart/form-data" id="MyUploadForm">
    <input name="FileInput" id="FileInput" type="file" />
    <input type="submit"  id="submit-btn" value="Upload" />
    <img src="images/ajax-loader.gif" id="loading-img" style="display:none;" alt="Please Wait"/>
</form>
<div id="progressbox">
    <div id="progressbar"></div>
    <div id="statustxt">0%</div>
</div>
<div id="output"></div>

jquery的

$(document).ready(function () {
    var options = {
        target: '#output',   // target element(s) to be updated with server response 
        beforeSubmit: beforeSubmit,  // pre-submit callback 
        success: afterSuccess,  // post-submit callback 
        uploadProgress: OnProgress, //upload progress callback 
        resetForm: true        // reset the form after successful submit 
    };

    $('#MyUploadForm').submit(function () {
        $(this).ajaxSubmit(options);
        return false;
    });
});
相关问题