【问题标题】:how to get image with jquery to Laravel如何使用 jquery 获取图像到 Laravel
【发布时间】:2021-05-10 19:43:31
【问题描述】:

在我看来,我有一个输入类型“文件”,所以我想用 jquery 获取这个文件并发送到我在 Laravel 中的控制器,但是,我在调试中没有看到这个文件

<form onSubmit="return false;" method="post" id="myForm" enctype=“multipart/form-data”>
@csrf
     <label for="input-file-max-fs">Foto do perfil</label>
     <input type="file" name="foto" id="foto" class="dropify @error('foto') is-invalid @enderror" data-max-file-size="3M" />
</form>

在 JS 中

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

   var dados = {
          foto: $('input[name=foto]').val(),
          .....
         }
$.ajax({
    method: 'PUT',
    dataType: 'JSON',
    url: '../perfil/editarusuario/',
    data: dados,
    success: function(res) {
        console.log(res);           
    } 
});
})

在我的控制器中,我试图获取文件,但没有成功

$file = $request->file('foto');
$file = $request->hasFile('foto')
$file = $request->file('foto')->isValid()

这些都不起作用

【问题讨论】:

  • 尝试将 processData: false, contentType: false 添加到您的 ajax 选项中
  • 如果我使用了 processData: false, contentType: false 我看到“无属性”

标签: php jquery ajax laravel


【解决方案1】:

你应该使用“new FormData()”和“contentType”, 这是这个问题的答案;

https://stackoverflow.com/a/21045034/14843602

【讨论】:

  • 当我使用这个 var dados = new FormData(); dados.append('teste', $('input[type=file]')[0].files[0]) 我收到这条消息:“格式错误的 UTF-8 字符,可能编码不正确”
  • 在这种情况下我把 processData: false, only
  • 如果我使用了 processData: false, contentType: false,它会显示“无属性”
猜你喜欢
  • 2012-06-13
  • 2016-11-04
  • 2011-04-22
  • 1970-01-01
  • 2011-10-20
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 2017-01-13
相关资源
最近更新 更多