Heim > Web-Frontend > uni-app > Hauptteil

So lösen Sie das Problem, dass die ausgewählten Albumbilder nicht im Uniapp-Projekt angezeigt werden

PHPz
Freigeben: 2023-04-06 14:26:48
Original
3580 Leute haben es durchsucht

Beim Entwickeln mit Uniapp müssen wir häufig die Funktion zum Auswählen von Albumbildern verwenden. Manchmal stoßen wir jedoch auf das Problem, dass die Bilder nach der Auswahl nicht angezeigt werden. In diesem Artikel erkläre ich, warum dieses Problem auftritt und wie man es löst.

1. Warum gibt es das Problem, dass die Albumbilder nicht angezeigt werden?

1. Berechtigungsprobleme

Im Android-System müssen wir dynamisch die Erlaubnis zum Lesen des externen Speichers beantragen, bevor wir auf das Fotoalbum zugreifen können. Wenn wir die Erlaubnis nicht erfolgreich beantragen, werden die Bilder im Fotoalbum nicht angezeigt gelesen werden und daher nicht angezeigt werden können.

2. Datentypproblem

Wenn wir die API zum Auswählen von Albumbildern aufrufen, müssen wir ein Array zurückgeben, um die ausgewählten Bilder zu laden. Manchmal liegt jedoch eine Nichtübereinstimmung des Datentyps in unserem Code vor, was dazu führt, dass alle ausgewählten Bilder nicht verfügbar sind auf der Seite angezeigt werden.

3. Pfadproblem

Die im Album ausgewählten Bilder müssen beim Übertragen auf die Startseite mit dem Pfad des Bildes angezeigt werden. Wenn unser Pfad jedoch falsch geschrieben ist oder der Dateiname nicht übereinstimmt, wird der Das ausgewählte Bild wird nicht normal angezeigt.

2. Wie kann das Problem gelöst werden, dass Albumbilder nicht angezeigt werden?

1. Berechtigungsprobleme prüfen

Bei der Auswahl von Albumbildern müssen wir eine Erlaubnis zum Lesen des externen Speichers beantragen. Wenn unser Erlaubnisantrag nicht erfolgreich ist, müssen wir dies überprüfen. Sie können das Berechtigungsproblem lösen, indem Sie die folgenden Schritte ausführen:

(1) Fügen Sie die Berechtigung zum Lesen externen Speichers in der Datei manifest.json hinzu:

"android": {
    "permission": [
      "android.permission.READ_EXTERNAL_STORAGE"
    ]
  }
Nach dem Login kopieren

(2) Auf der Seite, auf der Sie die Funktion zum Auswählen von Albumbildern verwenden möchten , verwenden Sie die uni.requestAuthorize-Methode, um die Berechtigung zu beantragen:

uni.requestAuthorize({
    scope: 'scope.writePhotosAlbum',
    success() {
        console.log('授权成功')
    },
    fail() {
        console.log('授权失败')
    }
})
Nach dem Login kopieren

2. Überprüfen Sie die Datentypprobleme

Wenn unsere Datentypen nicht übereinstimmen, kann das ausgewählte Bild nicht normal auf der Seite angezeigt werden. Wir müssen auf den im Code verwendeten Datentyp achten, wie im folgenden Beispiel:

data() {
    return {
       imgList: [],
    }
},
methods: {
    chooseImage(){
        uni.chooseImage({
            count: 3,
            sizeType: ['original', 'compressed'],
            sourceType: ['album', 'camera'],
            success: function (res) {
                this.imgList = res.tempFilePaths; // 选择图片成功后将图片路径存入imgList数组
            }
        })
    }
}
Nach dem Login kopieren

Im obigen Code speichern wir den temporären Pfad des ausgewählten Bildes im imgList-Array, wenn wir also das ausgewählte Bild anzeigen müssen Bild auf der Seite, kann auf folgende Weise erfolgen:

<view>
    <image v-for="(item,index) in imgList" :src="item"></image>
</view>
Nach dem Login kopieren

Im obigen Code verwenden wir v-for, um jedes Element im imgList-Array zu durchlaufen, und verwenden das :image-Tag, um das Bild auf der Seite anzuzeigen.

3. Auf Pfadprobleme prüfen

Wir müssen beim Anzeigen von Bildern den richtigen Pfad als Referenz verwenden. Daher müssen wir sorgfältig prüfen, ob der Bildpfad korrekt ist und ob Rechtschreibfehler und andere Probleme vorliegen. Normalerweise geben wir nach der Auswahl eines Bildes einen temporären Pfad zurück, aber wenn wir das Bild anzeigen, müssen wir einen lokalen Pfad verwenden. Wir können den lokalen Pfad über die folgende Methode erhalten:

let realPath = '';
uni.getFileSystemManager().access({
        path: tempFilePaths,
        success() {
            realPath = wx.env.USER_DATA_PATH + '/' + new Date().getTime() + '.png'; //使用 wx.env.USER_DATA_PATH 获取本地存储路径
            uni.getFileSystemManager().saveFile({
                tempFilePath: tempFilePaths, // 临时文件地址
                filePath: realPath,
                success: (res) => {
                        console.log('保存图片到本地成功:' + res.savedFilePath)
                },
                fail: function (res) {
                    console.log(res);
                }
            });
        },
        fail() {
            console.log('访问失败')
        }
});
Nach dem Login kopieren

Mit der oben genannten Methode können wir das ausgewählte Bild lokal speichern und nach erfolgreichem Speichern die Rückruffunktion aufrufen, um den Pfad abzurufen und anzuzeigen.

Zusammenfassung

Dass Albumbilder nicht angezeigt werden, ist ein häufiges Problem, wenn wir mit Uniapp entwickeln. Typischerweise wird dieses Problem durch falsche Berechtigungen, Datentypen, Pfade usw. verursacht. Wir können dieses Problem lösen, indem wir Berechtigungen, Datentypen und Pfade überprüfen. Ich hoffe, dieser Artikel kann allen helfen und den Uniapp-Entwicklungsprozess reibungsloser gestalten.

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Problem, dass die ausgewählten Albumbilder nicht im Uniapp-Projekt angezeigt werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!