Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带有Plupload的Laravel 4 TokenMissMatchException异常_Php_Laravel_Laravel 4_Csrf_Plupload - Fatal编程技术网

Php 带有Plupload的Laravel 4 TokenMissMatchException异常

Php 带有Plupload的Laravel 4 TokenMissMatchException异常,php,laravel,laravel-4,csrf,plupload,Php,Laravel,Laravel 4,Csrf,Plupload,我试图用Plupload上传文件,但我总是遇到异常 // Route Route::post("/posts/gallery", "PostsController@uploadGallery"); // Controller action public function uploadGallery(){ $file = Input::file('file'); $destinationPath = public_path() . '/imgs';

我试图用Plupload上传文件,但我总是遇到异常

// Route
Route::post("/posts/gallery", "PostsController@uploadGallery");
// Controller action
    public function uploadGallery(){
        $file = Input::file('file');
        $destinationPath = public_path() . '/imgs';
        $extension = $file->getClientOriginalExtension();
        $filename = "post-" . str_random(12) . "." . $extension;

        $inFile = $file->getRealPath();
        $outFile = public_path() . "/imgs/" . $filename;

        $image = new Imagick($inFile);
        $image->thumbnailImage(550, 0);
        if($image->writeImage($outFile)){
            return Response::json(["response" => "ok", "img" => $filename]);
        }else{
            return Response::json(["response" => "error"]);
        }
    }
这是我试图解决的问题。我试图向请求添加
\u令牌
,但它没有接收到:

$("#uploader").pluploadQueue({
            runtimes : 'html5,flash,silverlight,html4',
            url : "{{ URL::action('PostsController@uploadGallery') }}",
            chunk_size: '1mb',
            rename : true,
            dragdrop: true,

            filters : {
                max_file_size : '3mb',
                mime_types: [
                    {title : "Image files", extensions : "jpg,gif,png"},
                ]
            },
            resize : {width : 320, height : 240, quality : 90},
            flash_swf_url : "<?php echo public_path() . '/js/Moxie.swf'; ?>",
            silverlight_xap_url : "<?php echo public_path() . '/js/Moxie.xap'; ?>",
            prevent_duplicates: true,
            multipart_params : {
                "_token" : $("[name=_token]").val()
            }
        });
有人能帮我吗

更新:

用于上载文件的Html表单:

<div class="imageGallery">
    {{ Form::open() }}
        <div id="uploader">
            <p>Your browser doesn't have Flash, Silverlight or HTML5 support.</p>
        </div>
    {{ Form::close() }}
</div>

{{Form::open()}}
您的浏览器不支持Flash、Silverlight或HTML5

{{Form::close()}}
//隐藏输入字段

<input type="hidden" value="VJRUpvq92oYxCsNHVBi5TqqkU6I6CQayay6x7L0m" name="_token">

如果上传是通过ajax完成的,则您的
csrf
过滤器希望令牌位于“x-csrf-token”标题中,而不是输入中

不要将令牌添加到
多部分参数
,而是尝试将其添加到
标题

$("#uploader").pluploadQueue({
    runtimes : 'html5,flash,silverlight,html4',
    url : "{{ URL::action('PostsController@uploadGallery') }}",
    chunk_size: '1mb',
    rename : true,
    dragdrop: true,
    filters : {
        max_file_size : '3mb',
        mime_types: [
            {title : "Image files", extensions : "jpg,gif,png"},
        ]
    },
    resize : {width : 320, height : 240, quality : 90},
    flash_swf_url : "<?php echo public_path() . '/js/Moxie.swf'; ?>",
    silverlight_xap_url : "<?php echo public_path() . '/js/Moxie.xap'; ?>",
    prevent_duplicates: true,
    headers: {
        "x-csrf-token" : $("[name=_token]").val()
    }
});

可以找到有关属性选择器的CSS3文档。尽管有些浏览器不使用引号,但它们提供的示例显示了所引用的选择器值。

即使使用新的编解码器,我也会遇到与以前相同的错误。是否可以使用csrf筛选器中的调试信息更新问题?上传完成后,
Request::ajax()
Request::header('x-csrf-token')
Input::get('u-token')
$token
,和
Session::token()
的值是什么?我得到了TokenMismatchException$令牌为空,而会话::令牌()包含token@Alen
$token
为空,但为什么?这是不是一个ajax调用?请求是否包含标头?在javascript中,
$(“[name=\u token]”).val()是否实际返回值?$(“[name=\u token]”。val()返回空字符串。是的,它是ajax callDoes
console.log($((“输入[name=\u令牌])).val())
返回什么?我问这个问题只是因为选择器在我看来不可靠(但我可能是在想象),不,它不会返回任何东西。我还尝试在Firebug控制台中执行$(“input[name=_token]”).val(),但仍然无效。现在这真的很奇怪。。。我能想到的唯一一件事是,您遇到了其他一些错误,这些错误阻止了任何其他JS的运行。加载页面/发出请求时控制台中有任何内容吗?
$(“[name=”u-token']”)或
$([input[name=”u-token'])
如何。您是否查看了页面的源代码以确保输入确实存在?确保它不在您忘记包含的部分中,或者某个地方没有出于某种原因删除该元素的javascript。$($(“input[name=''U token'])正在工作。谢谢你,帕特里克斯
$("#uploader").pluploadQueue({
    runtimes : 'html5,flash,silverlight,html4',
    url : "{{ URL::action('PostsController@uploadGallery') }}",
    chunk_size: '1mb',
    rename : true,
    dragdrop: true,
    filters : {
        max_file_size : '3mb',
        mime_types: [
            {title : "Image files", extensions : "jpg,gif,png"},
        ]
    },
    resize : {width : 320, height : 240, quality : 90},
    flash_swf_url : "<?php echo public_path() . '/js/Moxie.swf'; ?>",
    silverlight_xap_url : "<?php echo public_path() . '/js/Moxie.xap'; ?>",
    prevent_duplicates: true,
    headers: {
        "x-csrf-token" : $("[name=_token]").val()
    }
});
$("input[name='_token']").val()