【发布时间】:2020-09-24 03:08:47
【问题描述】:
我正在尝试从存储文件夹中获取文件并将它们转换为 vue.js 中的 base64。我正在使用下面的方法,但它似乎不起作用。
public function getImages()
{
$filesToReturn = [];
$files = File::files(storage_path() . "/app/record_keeper");
foreach ($files as $file) {
array_push($filesToReturn, $file->getRealPath());
}
return response()->json(['files' => $filesToReturn], $this->response_status_code, 200);
}
返回的文件地址
{"files":["/home/Project/vue_image_previewer/storage/app/record_keeper/1.jpeg","/home/Project/vue_image_previewer/storage/app/record_keeper/2.jpeg"]}
在Vue js中
data() {
return {
imageUrls: [],
images: [],
img_id: 0,
currentIndex: 0,
savedImages: [],
}
},
methods: {
async getAllImagesById() {
await this.axios.get('/aaa-get-images').then(response => {
this.savedImages = response.data.data;
self.savedImages.forEach(function (url) {
this.toDataUrl(url);
});
},
toDataUrl(url) {
let self = this;
var xhr = new XMLHttpRequest();
xhr.onload = function() {
var reader = new FileReader();
reader.onloadend = function() {
self.imageUrls.push({
file: reader.result,
});
}
reader.readAsDataURL(xhr.response);
};
xhr.open('GET', url);
xhr.responseType = 'blob';
xhr.send();
}
}
问题出在哪里? 谢谢!
【问题讨论】:
-
什么是
self?它是否在任何地方定义?其他JS代码看起来不错。 -
让 self = this;我更新了问题。
-
我不确定您如何在 Vuejs 中定义 toDataUrl。在 VueJS 中,函数被定义为方法,不需要单独定义
self。你能分享整个 vuejs 组件吗? -
我更新了问题。请检查。
-
在
getImages()中尝试array_push($filesToReturn, Storage::url($file->getRealPath()));。
标签: laravel vue.js base64 base64url