【发布时间】:2018-09-29 12:40:54
【问题描述】:
我可以使用我的 api 成功地将我的文件上传到 amazon s3 存储桶,并且我可以得到响应:
但是当我将此 api 集成到我的应用程序中时,它会说 Call to a member function getClientOriginalName() on null 我不知道我在哪里做错了:
我的Api方法:
public function uploadToAws(Request $request) {
$file = $request->file('image');
$imageName = 'company_logo/' . $file->getClientOriginalName();
Storage::disk('s3')->put($imageName, file_get_contents($file));
Storage::disk('s3')->setVisibility($imageName, 'public');
$url = Storage::disk('s3')->url($imageName);
$resultArray = ['status' => 1, 'message' => 'File uploaded to s3 bucket!', 'dataArray' => $url];
return Response::json($resultArray, 200);
}
以及我对此 api 的回应:
{
"status": 1,
"message": "File uploaded to s3 bucket!",
"dataArray": "https://spikessales.s3.amazonaws.com/company_logo/template3.jpg"
}
我可以使用这个 api 完美地将文件上传到 s3 存储桶:
但是当我集成到我的应用程序视图时,它显示调用成员函数 getClientOriginalName() on null 我不知道我错在哪里:
此视图代码使用ajax调用:
///upload logo sec
$(document).on('click', '.browse', function () {
var file = $(this).parent().parent().parent().find('.changefle');
file.trigger('click');
});
$(document).on('change', '.changefle', function () {
var imagename = "";
$.each($(".changefle")[0].files, function (i, file) {
imagename = file.name;
});
$.ajax({//Process the form using $.ajax()
type: 'post', //Method type
url: 'http://127.0.0.1:8000/api/upload_aws', //Your form processing file
URL
data: {
image: imagename
}, //Forms name
dataType: 'json',
success: function (data) {
console.log(data);
// localStorage.setItem("set-compylogo", companylogo);
},
error: function (data) {
console.log("error");
}
我们将非常感谢您的帮助!
【问题讨论】:
-
我认为你的表单文件是真的不可用。
-
我不知道其他人正在集成我的 api 的视图文件
-
$request->file('image'); is 可能为空
-
请提供任何解决方案
-
if ($request->hasFile('image')) { } 尝试输入条件并检查
标签: php laravel amazon-s3 image-uploading