jQuery上传正在运行但没有上传文件

时间:2014-10-20 06:34:07

标签: php jquery laravel laravel-4

我想知道我是否可以得到一些建议。

我尝试使用jquery上传文件,同时让用户保持在同一页面上。

无论我尝试什么都不行。我想知道是否有人可以看看并告诉我哪里出错了。

我的HTML

<form id="import" enctype="multipart/form-data" action="/ajax/postimport" method="POST">
    <div class="form-group">
        <input type="file" name="filename" id="filename" />
    </div>
    <button type="button" id="importSave">Import</button>
</form>

这是我的jquery

$("#importSave").click(function()
{
    $.ajax({
        url: '/ajax/postimport',
        type: 'POST',
        dataType: 'json',
        contentType: false,
        processData: false,
        data: {file: $(#filename).val()},
        success: function(data)
        {
            alert(data.result)
        },
        error: function(textStatus, errorThrown)
        {

        }
    });
});

然后是我的PHP,即Laravel 4

        if (Input::hasFile('filename')) {
            $file = Input::file('filename');
            $destPath = public_path() . '/uploads/';
            $filename = str_random(10) . '_' . $file->getClientOriginalName();
            $uploadSuccess = $file->move($destPath, $filename);
        }

2 个答案:

答案 0 :(得分:0)

仅使用jQuery ajax函数无法上传文件。您需要使用FormData对象来执行此操作。 Formdata的问题在于它是not supported in all browsers。如果你想使用它,你总能找到很多教程,如this one

您也可以使用a jQuery plugin that does the work for you。 :)

答案 1 :(得分:0)

不可能这样做。你只是用一个字段文件发布ajax请求:$(#filename).val()。

所以你需要使用ajax上传库。 有几种选择。但我最喜欢的是

http://www.plupload.com/

http://www.uploadify.com/