Php 使用Laravel和Ajax上传单个图像
我正在尝试用一个图像和一个表单来改变这个图像。我的想法是用ajax来实现这一点,这样图像就可以随意改变。这是我的代码: [HTML]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')) !!} <
<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;
}
}
}