如何在Laravel中集成blueimp/jQuery-File-Upload插件?

9
尝试构建我的网站上传图片部分,并希望使用blueimp/jQuery-File-Upload插件,而不是从头开始硬编码所有内容。然而,我对此完全陌生,请问如何将该插件与我的Laravel结构集成

我应该把所有文件放在哪里?在vendors文件夹中吗?还是应该拆分所有文件夹并将它们的js文件夹放在我的文件夹中等等?

如果您知道教程,那就更好了...谷歌上找不到好的。

谢谢!


你的问题太宽泛了,请尝试具体说明你的问题。 - peter.babic
好的,我重新表达一下结尾,试图让它更清晰明了 :) - commandantp
你可以将js和css文件放入public/文件夹中,或者使用类似于Bower的管理工具来代替。 - peter.babic
@delmadord 依赖关系怎么样?"dependencies": { "jquery": ">=1.6", "blueimp-tmpl": ">=2.5.3", "blueimp-load-image": ">=1.11.0", "blueimp-canvas-to-blob": ">=2.1.0" - commandantp
我的错,它们是“包含”的...该死,这不直观!!! :p - commandantp
1个回答

7
你可以尝试使用我发布的代码来帮助他人。
第一步是定义上传页面和上传处理路由,像这样:
Route::get('image_', function() {
    return View::make('image.upload-form');
});

Route::post('image_updade', 'ImageController@postUpload');

将您的 image.upload-form 视图更改为以下内容(我使用简单的 HTML,而不是 Blade 模板):

<?php echo Form::open(array('url' => 'image_updade', 'files' => true, 'id' => 'myForm')) ?> 
    Name: <input type='file' name='image' id='myFile'/>
    <br/>
    Comment: <textarea name='comment'></textarea>
    <br/>
    <input type='submit' value='Submit Comment' /> 
<?php echo Form::close() ?>

现在您需要将JavaScript文件添加到该页面的<HEAD>标记中:
<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js'></script> 
<script src='http://malsup.github.com/jquery.form.js'></script> 

<script> 
    // Wait for the DOM to be loaded 
    $(document).ready(function() {

        // Bind 'myForm' and provide a simple callback function 
        $('#myForm').ajaxForm(function() {
            alert('Thank you for your comment!');
        });

        $('#myFile').change(function() {
            $('#myForm').submit();
        });
    });
</script> 

下面是一个简单的示例代码,展示了 ImageController@postUpload 控制器如何获取上传的文件,并将其移动到目标文件夹:

<?php

    class ImageController extends BaseController {

        public function getUploadForm() {
            return View::make('image/upload-form');
        }

        public function postUpload() {

            $file = Input::file('image');
            $input = array('image' => $file);
            $rules = array( 'image' => 'image');
            $validator = Validator::make($input, $rules);

            if ( $validator->fails() ){
                return Response::json(['success' => false, 'errors' => $validator->getMessageBag()->toArray()]);
            }
            else {
                $destinationPath = 'files/';
                $filename = $file->getClientOriginalName();
                Input::file('image')->move($destinationPath, $filename);
                return Response::json(['success' => true, 'file' => asset($destinationPath.$filename)]);
            }
        }
    }

你的表单中csrf_token在哪里? - Arsen Ibragimov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接