【问题标题】:Posting file by ajax "error 405 Method not Allowed" in Laravel在 Laravel 中通过 ajax“错误 405 方法不允许”发布文件
【发布时间】:2017-09-12 10:45:06
【问题描述】:

路线

Route::get('/mediafile', 'MediaController@index');

媒体控制器

public function store(Request $request)
{
    $image = $request->file('UserFile');
    if($request->hasFile('UserFile')) {
        $filename = $image->getClientOriginalName();  
        Image::make($image)->resize(300, 300)->save(public_path('media/' . $filename));
        $media = new Media();
        $media->Description = $request->Description ? $request->Description : '';
        $media->MediaPath = $filename;
        $media->MediaName = $filename;
        $media->save();
    }

    return response()->json($media);
}

查看

<div class="form-group image">
  <div class="col-xs-12 col-sm-12 col-md-12">
   <label>Gambar</label><input type="file" name="UserFile" id="userfile" style="display: inline">
    <label style="margin-left: 25px">atau</label>
      <a href="http://192.168.1.12/melody4/media/select.html" class="pilihmedia btn btn-default">Pilih dari media</a>
      <input type="hidden" id="MediaID" name="CategoryMediaID" value="" />
      <br /><br />
      <span class="uploadstatus"></span>
      <div class="success infomedia infomedia alert alert-success" style="display: none">
  </div>
</div>

阿贾克斯

$('#userfile').change(function(){
$(this).attr('disable',true);
$('.uploadstatus').html('Sedang mengupload file <img src="{{ asset('vendor/img/loading.gif') }}" alt="ajaxloading" />');
$(this).parent().ajaxSubmit({
    url: "<?php echo url('/mediafile') ?>",
    dataType: 'json',
    type: "POST",
    success : function(data){
      $(this).attr('disable',false);
      $('.uploadstatus').empty();
    },
    error : function(data){

    }
  });  

});

我在发布图片时使用 AJAX 时收到错误“405 Method Not Allowed”,我已研究并遵循 Stack Overflow 中的所有答案,但仍然无法解决。

请帮我解决。

【问题讨论】:

  • 能否请您发布代码而不是图片?您能否也提供路线定义?
  • 请注意,文本信息的图像与剪贴板、屏幕阅读器和搜索引擎不兼容,因此对于想要帮助您的人来说不是一种有用的格式。请用格式化的文本替换它们。有一个按钮可以帮助您在编辑器中格式化文本。
  • @halfer 哦,对不起..因为这是我第一次使用 stackoverflow,谢谢您的建议
  • 不客气。请记住,此建议适用于 Internet 上的任何帮助论坛,并不特定于 Stack Overflow。
  • @ka_lin 你好,我已经把它们改成代码了。。对不起,因为这是我第一次使用stackoverflow。

标签: php ajax laravel-5 ajaxform


【解决方案1】:

可能是 csrf 令牌中的问题 在html中添加这一行

<meta name="_token" content="{{ csrf_token() }}"/>

在ajax中

$.ajaxSetup({
          headers: { 'X-CSRF-Token' : $('meta[name=_token]').attr('content') }
     });

需要在ajax调用中发布图片

【讨论】:

    【解决方案2】:

    Route::get 更改为 Route::post 以处理 POST 请求。

    如果您需要同时支持 GET 和 POST:请使用 Route::matchRoute::any

    在此处阅读有关 Laravel 路由器的更多信息:https://laravel.com/docs/5.5/routing

    【讨论】:

      猜你喜欢
      • 2019-07-29
      • 1970-01-01
      • 2020-11-19
      • 2018-01-25
      • 2018-03-07
      • 2015-08-25
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多