问题描述
我正在使用 Retrofit API 来访问我的 Laravel 站点数据。我无法在我的 android 应用中显示图像。
这是我的 Laravel 代码,用于在我的 Laravel 站点中保存图像。
$path = 'images/no-thumbnail.jpeg';
if($request->has('thumbnail')){
$extension = ".".$request->thumbnail->getClientOriginalExtension();
$name = basename($request->thumbnail->getClientOriginalName(),$extension).time();
$name = $name.$extension;
$path = $request->thumbnail->storeAs('images',$name,'public');
}
这是 Products 标签的 API 响应。
[{"id":1,"user_id":"1","title":"White T shirt","description":"White T shirt small size","categorie":"1","price":"50","discount_price":"0","thumbnail":"images\/81vzc0ciKwL._AC_UX679_1619280040.jpg","slug":"white-t-shirt","options":null,"featured":"0","status":"0","created_at":"2021-04-24T16:00:40.000000Z","updated_at":"2021-04-24T16:00:40.000000Z","deleted_at":null}]
图片的响应是这个"thumbnail":"images/81vzc0ciKwL._AC_UX679_1619280040.jpg"
对于我的 android 应用程序,我使用的是毕加索,这是代码。
Picasso.get().load(shopesModel.getThumbnail()).into(holder.shopImg);
但是,我仍然没有在我的 android 应用程序中获取图像。我正在获取产品表的其他字段。
这是应用的截图
我应该在哪里更改我的代码。 Laraval 或更改我的应用代码,以便我可以从 Laravel 获取图像。
解决方法
由于您的 json 响应在缩略图中没有合格的 url
"thumbnail":"images\/81vzc0ciKwL._AC_UX679_1619280040.jpg"
有两种方法可以修复 1.最佳解决方案是从服务器端发送完整的 url 图片路径 2.在你的android中硬编码base url并附加到Picasso
"thumbnail":"https://urdomain/storage/images/81vzc0ciKwL._AC_UX679_1619280040.jpg"
或
String baseUrl="https://urdomain/storage/";
Picasso.get().load(baseUrl+shopesModel.getThumbnail()).into(holder.shopImg);