我正在上传,或者更好地说,尝试使用Ajax将图像上传到我的Laravel网站。我将图像转换为Base64并将它们上传到服务器。它有效。
来自iframe中服务器的响应
问题是,我不会一直得到这个错误。 当我尝试对响应做些什么时,我才会得到它。
这是我处理上传的方法。 当我像这样运行时,一切正常,我不得到错误。
public function upload(Request $request)
{
return var_dump($request->all());
}
但它是一个数组。所以要用它做点什么,我必须指定密钥。唯一的问题是,我很快就会遇到500错误。
我想将base64字符串转换回图像,所以我想这样做:
file_put_contents('foo.png', base64_decode($request->all()[0]));
但这会产生错误。 [0]
末尾的$request->all()
。
我无法将其删除,因为它需要base64字符串而不是数组。我还想知道如果我只是在var转储中将[0]
添加到$request-all()
的末尾会发生什么,但我仍然得到了错误。
我只是不明白。
这是我的Ajax电话:
$.ajax({
url: "/admin/upload",
type: "POST",
data: queue,
processData: false,
error: function(xhr, status, error) {
let err = xhr.responseText;
//console.log(err);
$('#upload-InnerPanel').append("<iframe width='600' height='500' src='" + err +"'> </iframe>")
},
success: function (xhr) {
console.log(xhr);
},
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
答案 0 :(得分:3)
在评论中回答,但无论如何都将此作为答案发布:
收到的$ request值未经过数字索引,因此您需要使用其名称访问它。您需要使用$request->all()[0]
,或者在表单中指定值的任何内容,而不是$request->theData
。