Php 使用Laravel和Ajax上传单个图像

Php 使用Laravel和Ajax上传单个图像,php,jquery,ajax,laravel,Php,Jquery,Ajax,Laravel,我正在尝试用一个图像和一个表单来改变这个图像。我的想法是用ajax来实现这一点,这样图像就可以随意改变。这是我的代码: [HTML] <h3>Configurar módulo</h3> {!! Form::open(array('url' => 'password/change', 'method' => 'POST', 'id'=>'formImg1_homeModules')) !!} <

我正在尝试用一个图像和一个表单来改变这个图像。我的想法是用ajax来实现这一点,这样图像就可以随意改变。这是我的代码:

[HTML]

<h3>Configurar módulo</h3>                          
{!! Form::open(array('url' => 'password/change', 'method' => 'POST', 'id'=>'formImg1_homeModules')) !!}
  <input type="hidden" name="_token" value="{{csrf_token()}}" id="img1Token_homeModules">                           
   <label>Imagen de fondo:</label>      
   <input id="img1Input_homeModules" type="file" name="img1">
   {!!link_to('#', $title = "Guardar", $attributes = array('id' => 'submitImg1_homeModules', 'class' => 'btn btn-default center-block', 'style' => 'width: 50%; margin-top:3%;'), $secure = null)!!}
{!!Form::close()!!}
[PHP/Laravel(控制器)]


问题是,当我在modules/prueba.jpg中保存图像时,它不会保存为jpg文件,我不知道为什么。我做错了什么?。还有另一种更简单的方法吗?

您是否检查了
\File::get($request->image)
以查看是否确实存在一个文件?你可能说它错了。我想你应该改为调用
$request->file('image')
。当我使用\File::get($request->image)时,我得到了一个错误:路径“name image”中不存在文件,所以出现了一些错误。我试图调用你说的方式,但我得到一个空字段,我的意思是,当我执行$request->file('fieldImage')时,我得到空值。在ajax脚本中,你已经将文件字段内容重命名为
image
,那么你不应该调用
$request->file('image')
?在任何情况下,您都可以使用
$request->file('image')->isValid()
验证请求字段中是否确实有一个文件。我尝试验证该文件,但得到一个错误500,这很奇怪,因为$request->file('image)返回文件名,但在保存时,操作不正确。
$("#submitImg1_homeModules").click(function(){
    if($("#img1Input_homeModules").val() == ""){
      alert("Debe seleccionar una imagen");
    }else{
        var route = window.location.protocol + "//" + window.location.host + "/ajax/config/uploadImage";
        var image = $("#img1Input_homeModules").val();
        var token = $("#img1Token_homeModules").val();
        var module = "img1";

        $.ajax({
          url: route,
          headers: {'X-CSRF-TOKEN': token},
          type: 'POST',
          dataType: 'json',
          data:{image,module},
          success: function(res){
            alert(res);
          },
          error: function(res){
            console.log(res);
          },
        });
    }
});
 /**
 * @Post("ajax/config/uploadImage")
 */
public function UploadImage(Request $request){
    if($request->ajax()){
        if(strcmp ($request->module , 'img1' ) == 0){
            \Storage::disk('local')->put('modules/prueba.jpg', \File::get($request->image));
            return 1;
        }else{
            return false;
        }
    }
}