php - Laravel 4 图片上传

标签 php jquery file-upload laravel laravel-4

你好,我正在尝试通过 laravel 上传图片,一切正常,但现在我想将上传更改为 jquery 上传,但随后我收到了 500 内部服务器错误

所以当我用 Jquery 处理事情时它失败了。任何人都知道问题可能是什么? HTML:

{{ Form::open(array('url' => '../public/posts/add', 'class'=>'form-horizontal', 'role' => 'form', 'id' => 'addPin', 'files' => true)) }}

            <div id="validation-errors" class="alert alert-danger" hidden>
                <p>Some errors occured</p>
                <ul></ul>
            </div>

            <!-- Image Type -->
                <span id="type-image" class="type-media">
                    <div class="form-group">
                        <label class="col-sm-3 control-label">Title</label>
                        <div class="col-sm-9">
                            {{ Form::text('Image-title', null, array('class' => 'form-control', 'placeholder' => '')) }}
                        </div>
                    </div>

                    <div class="form-group">
                        <label class="col-sm-3 control-label">Choose file</label>
                        <div class="col-sm-9">
                            {{ Form::file('Image-file') }}
                            <p class="help-block">Only .jpg, .png, .gif, .bmp allowed.</p>
                        </div>
                    </div>

                    <div class="form-group">
                        <label class="col-sm-3 control-label">Description</label>
                        <div class="col-sm-9">
                            {{ Form::textarea('Image-description', null, array('class' => 'form-control', 'rows' => '3')) }}
                        </div>
                    </div>
                </span>


            <div class="modal-footer">
                {{ Form::submit('Close', array('class' => 'btn btn-default', 'data-dismiss' => 'modal')) }}
                {{ Form::submit('Pin it, babe!', array('class' => 'btn btn-info')) }}
            </div>
            {{ Form::close() }}

查询

addPin.on('submit', function() {
    event.preventDefault();
    var errorForm = addPin.find('div#validation-errors');
    $.ajax({
        url: '../public/posts/add',
        type: 'post',
        cache: false,
        data: addPin.serialize(),
        beforeSend: function() {
            errorForm.hide();
            errorForm.find("ul").empty();
        },
        success: function(data) {
            if(data.success == false) {
                var arr = data.errors;
                console.log(arr);
                $.each(arr, function(index, value){
                    if (value.length != 0){
                        errorForm.find("ul").append('<li>'+ value +'</li>');
                    }
                });
                errorForm.show();
                } else {
                location.reload();
            }
        },
        error: function() {
            alert('Something went to wrong.Please Try again later...');
        }
    });
    return false;
} );

PHP

public function postAdd(){
        if (Auth::check()){
                    $rules = array(
                        'Image-title' => 'Required|Min:3|Max:255|alpha_spaces',
                        'Image-description' => 'Required|Min:3',
                        'Image-file' => 'image',
                    );

            $validator = Validator::make(Input::all(), $rules);

            if ($validator->fails()) {
                return \Response::json(['success' => false, 'errors' =>  $validator->getMessageBag()->toArray()]);
            } else {
                        $post = Post::create(array(
                            'user_id'   => Auth::user()->id,
                            'title'     => Input::get('Image-title'),
                            'description' => Input::get('Image-description'),
                            'type'      => 'Image',
                        ));

                        $file = Input::file('Image-file');

                        $destinationPath    = 'img/';
                        $extension          = $file->getClientOriginalExtension();
                        $filename           = 'usr_'.  Auth::user()->id . '_post'.$post->id .'.'. $extension;

                        $file->move($destinationPath, $filename);
                        $post->imgLocation = $filename;
                        $post->save();

                DB::table('board_post')->insert(['board_id'  => 2, 'post_id'   => $post->id]);

                return  \Response::json(['success' => true]);//*/

            }
        }
    }

最佳答案

您的 app/storage/logs/laravel.log 文件中应该有一个错误,说明了确切的错误。不过,在开发环境中最好将 PHP 设置为显示所有错误,因此您可能需要考虑启用这些功能,这样您将获得比“500 Internal Server Error”更具描述性的消息。

关于php - Laravel 4 图片上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22768579/

相关文章:

php - 确认不起作用时替换上传的文档

javascript - 紧固此 Ajax 响应

php - 使用 jQuery/AJAX 从 MySQL DB 获取登录用户列表?

jquery - 如何将 span 标签包装在数据表搜索输入周围以将 'clear search' 功能与 jquery 集成?

java - 在 http 请求之间保留文件

java - 上传超大 (> 1GB) 文件的建议

php - Apache mod-rewrite htaccess - 带参数的动态 url

php - mysql 子查询有多于一列

javascript - 多个 ajax 调用的延迟调用

javascript - 防止 BACKSPACE 使用 jQuery 向后导航(如 Google 的主页)