簡體   English   中英

dropzone laravel,顯示419錯誤

[英]Dropzone with laravel, it displays 419 error

我已經測試了我所看到的所有內容,但它對我不起作用,我正在使用帶有 laravel 的 dropzone,我的問題是它顯示 419 錯誤,我知道這與 csrf 令牌有關,但我無法修復它。

我的 HTML 代碼是這樣的:

<div id="my-dropzone" class="dropzone"></div>

我的 javascript 代碼是這樣的:

Dropzone.autoDiscover = false;

$(document).ready(function(){

   $('#my-dropzone').dropzone({
      url: 'http://54.161.128.196/pre_image/store',
      headers: {
        'X-CSRF-TOKEN': $('meta[name="token"]').attr('content')
      },
      method: 'post',
      dictResponseError: 'Error uploading file!'
   });

});

我的 Laravel 路線:

Route::post('/pre_image/store', 'Pre_ImageController@store');

我將它放在中間件中以查看是否可以刪除 419 錯誤:

它在 VerifyCsrfToken 中間件中

protected $except = [
    'pre_image/store'
];

它沒有用,我在元中有這樣的 csrf 令牌:

<meta name="csrf-token" content="{{ csrf_token() }}">

這是錯誤的屏幕截圖:

截屏

所以我想知道問題是什么,如果禁用該路由來驗證令牌,甚至它已分配令牌,為什么它會顯示 419 錯誤?

謝謝!

我對 Dropzone 也有類似的問題。 我最終將標題拉入頁面頂部的 ajax function 而不是 DZ 標題部分。 這允許任何通用 ajax 請求具有正確的 CSRF。

嘗試這個:

$.ajaxSetup({
  headers: {
    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  }
});

如果其他人在以表格形式上傳圖片時遇到此問題,並且上述解決方案不起作用,那么這是我的解決方案。 我在網頁上找到了生成 src 數據的 Javascript 代碼。

就我而言,是這樣的:

  $('#'+newId).attr('src', canvas.toDataURL());

這個問題是它默認為一個非常大的 PNG 文件。 如果將其更改為以下內容,您將擁有一個更小的文件,上傳起來會容易得多。

$('#'+newId).attr('src', canvas.toDataURL('image/jpeg', 0.7));

這將產生一個小得多的上傳文件。 我的問題是,如果我嘗試上傳超過 3 張圖片,我會收到錯誤消息。 如果質量不夠好,請將 0.7 更改為 0.8。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM