【问题标题】:MethodNotAllowedHttpException error in Laravel 5 using ajax使用ajax的Laravel 5中的MethodNotAllowedHttpException错误
【发布时间】:2016-05-09 03:07:30
【问题描述】:

我正在尝试使用 ajax 上传图像,但我得到:加载资源失败:服务器响应状态为 500(内部服务器错误)。这是我的ajax:

$('document').ready(function() {
    $('#uploadImage').change(function(){
        image = $('#uploadImage').val;
        token = $('#token').val();
        $.ajax ({
            type: 'POST',
            url: '/photo',
            data: { image , token },
            success: function(){

                $('.img-thumbnail').attr("src", 'images/new_image.png');
            }
        })
    })


});

这是我的路线:Route::post('/photo', 'ShopsController@uploadPhoto');

这是我的控制器:

public function uploadPhoto(Request $request)
    {

        //Sets file name according to authenticated shop id
        $imageName = 'new_image.png';

        //Save file to public/images

        $img = Image::make($request->file('image'));
     $img->resize(380, 300)->save('images/' . $imageName, 60);
    }

这是我的表格:

<form action="{{ action('ShopsController@store') }}" method="post" enctype="multipart/form-data">
    <input id="token" type="hidden" name="_token" value="{{ csrf_token() }}">
   <input id="uploadImage" class="btn btn-upload" type="file" name="image"> </form>

【问题讨论】:

  • 您的表单操作应该是action('ShopsController@uploadPhoto'),不是吗?根据您发布到的路线?
  • 检查 AccessControl 中的访问权限
  • 注意下划线 int 标记 (_token) - 确保在 ajax 帖子的数据中发送相同的下划线
  • 不只是 ajax 帖子应该指向 ShopsController@uploadPhoto。 AccessControl 是什么意思。我实际上是 ajax 的初学者。
  • 您的网络服务器是否对存储文件夹或存储图像的位置具有写入权限?

标签: php jquery ajax laravel-5


【解决方案1】:

AJAX 文件上传比仅获取图像元素的 value 属性要复杂一些。

在此处阅读此问题的第一个答案:jQuery Ajax File Upload

它使用FormData对象MDN

// HTML file input, chosen by user
formData.append("userfile", fileInputElement.files[0]);

虽然并非所有浏览器都支持。

这里有一个简单的 jQuery ajaxFileUpload 示例:http://www.sitepoint.com/image-upload-example/

【讨论】:

  • 感谢您的回答。现在我检查了当我设置一个'get'方法时它会走得更远。所以我认为问题在于,虽然我在 laravel 上设置了一个“发布”路线,但它的行为就像一个 get。你能解释一下吗?
  • 图像 = $('#uploadImage').val;这行不通。图像有不同的格式,每个都有自己的编码。 image = $('#uploadImage').val 根本不会检索图像。而且您的 POST 路线的行为不像 GET。因为要么你定义了一个 GET 路由,要么默认的 get 方法给你一些默认错误而不是内部错误。
  • Nvm 我会找到其他方法。顺便说一句,感谢您的 ajax 课程和您的回答。
猜你喜欢
  • 1970-01-01
  • 2015-09-11
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
  • 2018-08-07
  • 2016-05-27
  • 2015-08-26
  • 2016-05-23
相关资源
最近更新 更多