Heim Backend-Entwicklung Golang Hochladen von Anhängen in Beego – Machen Sie Ihre Webanwendung reicher

Hochladen von Anhängen in Beego – Machen Sie Ihre Webanwendung reicher

Jun 23, 2023 am 11:04 AM
web应用 beego(框架) 附件上传

Mit der kontinuierlichen Weiterentwicklung von Webanwendungen werden auch die Anforderungen der Benutzer an umfassendere Funktionen und Erlebnisse immer höher. Unter diesen ist das Hochladen von Anhängen eine grundlegende und wichtige Funktion. Es ermöglicht Benutzern nicht nur das Hochladen und Teilen ihrer eigenen Dateien, sondern ermöglicht Entwicklern auch die einfache Implementierung verschiedener Geschäftsszenarien, wie z. B. das Hochladen von Avataren, die Anzeige von Bildern, das Herunterladen von Dateien usw .

Beego ist ein Web-Framework, das auf der Go-Sprache basiert. Es bietet eine Fülle von Funktionen und Tools, die es Entwicklern ermöglichen, schnell effiziente, skalierbare und sichere Webanwendungen zu erstellen. In Beego können Sie die Funktion zum Hochladen von Anhängen ganz einfach in Webanwendungen implementieren, indem Sie das integrierte Tool zum Hochladen von Anhängen verwenden.

In diesem Artikel stellen wir die Verwendung der Funktion zum Hochladen von Anhängen in Beego vor und geben einige praktische Überlegungen und Optimierungstipps.

1. Beegos Funktion zum Hochladen von Anhängen verwenden

In Beego liegt der Schlüssel zur Implementierung der Funktion zum Hochladen von Anhängen in der Verwendung des integrierten Tools zum Hochladen von Dateien – beego.Context.Input. Dieses Tool bietet zwei Methoden: RetrieveFile (hochgeladene Dateien abrufen) und SaveToFile (hochgeladene Dateien auf der Festplatte speichern).

Das Folgende ist ein einfacher Beispielcode für das Hochladen von Anhängen:

// 控制器代码
func (c *AttachmentController) Post() {
    _, header, err := c.GetFile("att_file")
    if err != nil {
        // 处理上传失败的情况
        c.Data["json"] = map[string]interface{}{
            "code":    1,
            "message": "Upload failed",
        }
    } else {
        // 处理上传成功的情况
        err = c.SaveToFile("att_file", header.Filename)
        if err != nil {
            c.Data["json"] = map[string]interface{}{
                "code":    1,
                "message": "Save file failed",
            }
        } else {
            c.Data["json"] = map[string]interface{}{
                "code":    0,
                "message": "Upload success",
            }
        }
    }
    c.ServeJSON()
}

// 视图代码
<form method="post" enctype="multipart/form-data" action="/attachment/upload">
  <input type="file" name="att_file" required>
  <input type="submit" value="Upload">
</form>
Nach dem Login kopieren

Im obigen Code erhalten wir die hochgeladene Datei über die Methode c.GetFile("att_file") im Controller. Wenn die Methode err zurückgibt, ist der Upload fehlgeschlagen. können wir die entsprechenden Fehlerinformationen in der Schnittstelle zurückgeben. Wenn der Upload erfolgreich ist, speichern Sie die Datei über die Methode c.SaveToFile("att_file", header.Filename) auf der Festplatte und geben Sie Erfolgsinformationen zurück.

Es ist zu beachten, dass wir das enctype-Attribut des Formulars über das enctype="multipart/form-data"-Attribut in der Ansicht als mehrteiligen Formulardatentyp angegeben haben. Dies liegt daran, dass das Hochladen von Anhängen mehrere Dateitypen unterstützen muss. Daher ist es erforderlich, diese Eigenschaft zu verwenden.

2. Verwandte Konfigurationen

In der tatsächlichen Entwicklung müssen wir einige Einstellungen für das Hochladen von Anhängen vornehmen, wie z. B. Dateigrößenbeschränkung, Dateitypen, die hochgeladen werden dürfen, Verzeichnis für hochgeladene Dateien usw.

Sie können relevante Konfigurationen in der Konfigurationsdatei in beego.AppConfig vornehmen, zum Beispiel:

# 支持的文件类型
file_types = ["jpg", "jpeg", "png", "gif", "txt", "doc", "docx", "pdf"]

# 上传文件大小限制
file_size = 10 << 20

# 上传文件目录
attachment_dir = "static/upload"
Nach dem Login kopieren

In der obigen Konfiguration begrenzen wir die Größe der vom Benutzer hochgeladenen Dateien auf nicht mehr als 10 MB (10<<20 bedeutet in Bytes umgewandelt). ), Zu den Dateitypen, die Benutzer hochladen dürfen, gehören jpg, jpeg, png, gif, txt, doc, docx und pdf, und das Speicherverzeichnis für hochgeladene Dateien ist als static/upload angegeben.

Es ist zu beachten, dass das Lesen von Konfigurationsdateien in Beego auf dem Lesen von Umgebungsvariablen basiert, die über die Methode os.Setenv („Umgebungsvariablenname“, „Variablenwert“) festgelegt werden können. Zum Beispiel:

os.Setenv("file_types", `["jpg", "jpeg", "png", "gif", "txt", "doc", "docx", "pdf"]`)
Nach dem Login kopieren

3. Optimierung des Anhang-Uploads

Zusätzlich zur Implementierung der grundlegenden Funktion zum Hochladen von Anhängen müssen wir auch auf einige zusätzliche Probleme achten.

  1. Bildskalierung

In praktischen Anwendungen müssen wir normalerweise hochgeladene Bilder skalieren und anpassen. Beego bietet zwei Werkzeugklassen, ImageCropper und ImageFilter, mit denen Bilder problemlos verarbeitet werden können. Zum Beispiel:

import (
    "github.com/astaxie/beego/utils/captcha"
    "github.com/astaxie/beego/utils/captcha/drivers"
)

func (c *AttachmentController) Post() {
    f, h, err := c.GetFile("att_file")
    if err != nil {
        // 处理上传失败的情况
        c.Data["json"] = map[string]interface{}{
            "code":    1,
            "message": "Upload failed",
        }
    } else {
        // 处理上传成功的情况
        fileDir := beego.AppConfig.String("attachment_dir")
        fileName := beego.Date(time.Now(), "20060102150405")+filepath.Ext(h.Filename)
        fPath := fileDir + "/" + fileName
        err = c.SaveToFile("att_file", fPath)
        if err != nil {
            c.Data["json"] = map[string]interface{}{
                "code":    1,
                "message": "Save file failed",
            }
        } else {
            c.Data["json"] = map[string]interface{}{
                "code":    0,
                "message": "Upload success",
                "url":     "/"+fPath,
            }
            fUrl := beego.URLFor("AttachmentController.ShowAttachment", ":filename", fileName)
            c.Data["json"].(map[string]interface{})["url"] = fUrl
        }

        // 图片缩放
        scaleWidth := 800 // 等比例缩放至800
        imageCropper := captcha.NewImageCrop(captcha.DriverImaging, fPath)
        err := imageCropper.Resize(scaleWidth)
        if err != nil {
            beego.Error(err)
        }

        // 图片滤镜
        imageFilter := captcha.NewImageFilter(captcha.DriverImaging, fPath)
        err = imageFilter.Hue(-25).Saturation(10).Brightness(-10).Contrast(-5)
        if err != nil {
            beego.Error(err)
        }
    }
    c.ServeJSON()
}
Nach dem Login kopieren

Im obigen Code verwenden wir die Werkzeugklassen ImageCropper und ImageFilter, um eine gleiche Skalierung bzw. Farbverarbeitung des Bildes zu erreichen.

  1. Blockierter Upload

Bei einigen größeren Dateien verursachen einmalige Uploads häufig Verzögerungen und Zeitüberschreitungen. Um das Benutzererlebnis zu verbessern, können wir die Block-Upload-Methode verwenden. Beego stellt die Toolklasse MultipartReader bereit, die Formulardaten analysieren und verarbeiten kann. Zum Beispiel:

func (c *AttachmentController) ChunkUpload() {
    // 读取表单数据
    reader, _ := c.Ctx.Request.MultipartReader()
    var (
        bigFile *os.File
        noi     int
    )
    for {
        part, err := reader.NextPart()
        if err == io.EOF {
            // 读取完成
            break
        }
        if part.FileName() == "" {
            continue
        }
        fileName := part.FileName()
        bigFile, err = os.OpenFile("static/chunk/"+fileName, os.O_WRONLY|os.O_CREATE, 0666)
        defer bigFile.Close()
        if err != nil {
            c.Data["json"] = map[string]interface{}{
                "code":    1,
                "message": "Create file failed",
            }
            c.ServeJSON()
            return
        }
        buf := make([]byte, 1024*1024) // 1MB的缓存
        for {
            n := 0
            n, err = part.Read(buf)
            noi += n // 总共读取的字节数
            if err != nil {
                if err == io.EOF {
                    break
                } else {
                    c.Data["json"] = map[string]interface{}{
                        "code":    1,
                        "message": "Read file failed",
                    }
                    c.ServeJSON()
                    return
                }
            }
            if _, err = bigFile.Write(buf[:n]); err != nil {
                c.Data["json"] = map[string]interface{}{
                    "code":    1,
                    "message": "Write file failed",
                }
                c.ServeJSON()
                return
            }
        }
    }
    // 返回上传结果
    c.Data["json"] = map[string]interface{}{
        "code":     0,
        "message":  "Upload success",
        "fileSize": noi,
    }
    c.ServeJSON()
}
Nach dem Login kopieren

Im obigen Code verwenden wir die Toolklasse MultipartReader, um die Formulardaten in Blöcken zu lesen, wobei wir jedes Mal 1 MB Daten lesen und sie in eine temporäre Datei schreiben. Schließlich führen wir alle aufgeteilten Dateien asynchron zu einer vollständigen Datei zusammen.

4. Zusammenfassung

In diesem Artikel haben wir die Funktion zum Hochladen von Anhängen in Beego vorgestellt und einige praktische Probleme erläutert und optimiert. Durch die Verwendung des Beego-Tools zum Hochladen von Anhängen können wir die Funktion zum Hochladen von Anhängen verschiedener Webanwendungen einfach implementieren und so die Benutzererfahrung und Entwicklungseffizienz verbessern.

Das obige ist der detaillierte Inhalt vonHochladen von Anhängen in Beego – Machen Sie Ihre Webanwendung reicher. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So entwickeln Sie eine Single-Page-Webanwendung mit Golang So entwickeln Sie eine Single-Page-Webanwendung mit Golang Jun 05, 2023 am 09:51 AM

Mit der kontinuierlichen Weiterentwicklung des Internets steigt auch die Nachfrage nach Webanwendungen. In der Vergangenheit bestanden Webanwendungen in der Regel aus mehreren Seiten, doch mittlerweile entscheiden sich immer mehr Anwendungen für die Verwendung von Single Page Applications (SPA). Single-Page-Anwendungen eignen sich sehr gut für den mobilen Zugriff, und Benutzer müssen nicht warten, bis die gesamte Seite neu geladen ist, was das Benutzererlebnis erhöht. In diesem Artikel stellen wir vor, wie man Golang zum Entwickeln von SPA-Anwendungen verwendet. Was ist eine Single-Page-Anwendung? Eine Single-Page-Anwendung bezieht sich auf eine Webanwendung mit nur einer HTML-Datei. Es verwendet Java

Erstellen Sie internationale Webanwendungen mit dem FastAPI-Framework Erstellen Sie internationale Webanwendungen mit dem FastAPI-Framework Sep 29, 2023 pm 03:53 PM

Verwenden Sie das FastAPI-Framework, um internationale Webanwendungen zu erstellen. FastAPI ist ein leistungsstarkes Python-Web-Framework, das Python-Typ-Annotationen und leistungsstarke asynchrone Unterstützung kombiniert, um die Entwicklung von Webanwendungen einfacher, schneller und zuverlässiger zu machen. Beim Erstellen einer internationalen Webanwendung bietet FastAPI praktische Tools und Konzepte, mit denen die Anwendung problemlos mehrere Sprachen unterstützen kann. Im Folgenden werde ich ein spezifisches Codebeispiel geben, um vorzustellen, wie das FastAPI-Framework zum Erstellen verwendet wird

Wie verbessert PHP8 die Leistung von Webanwendungen durch JIT-Kompilierung? Wie verbessert PHP8 die Leistung von Webanwendungen durch JIT-Kompilierung? Oct 18, 2023 am 08:04 AM

Wie verbessert PHP8 die Leistung von Webanwendungen durch JIT-Kompilierung? Mit der kontinuierlichen Weiterentwicklung von Webanwendungen und der steigenden Nachfrage ist die Verbesserung der Leistung von Webanwendungen zu einem der Schwerpunkte der Entwickler geworden. Als häufig verwendete serverseitige Skriptsprache war PHP schon immer bei Entwicklern beliebt. Der JIT-Compiler (Just-in-Time-Compilation) wurde in PHP8 eingeführt und bietet Entwicklern eine neue Lösung zur Leistungsoptimierung. In diesem Artikel wird ausführlich erläutert, wie PHP8 die Leistung von Webanwendungen durch JIT-Kompilierung verbessert, und es werden spezifische Codebeispiele bereitgestellt.

Verwendung von Beego zur Entwicklung von Webanwendungen mit Microservice-Architektur Verwendung von Beego zur Entwicklung von Webanwendungen mit Microservice-Architektur Jun 23, 2023 am 08:39 AM

Mit der Entwicklung des Internets und der Popularität von Anwendungen ist auch die Nachfrage nach Webanwendungen immer weiter gestiegen. Um den Anforderungen einer großen Anzahl von Benutzern gerecht zu werden, treten bei herkömmlichen Webanwendungen häufig Leistungsengpässe und Skalierbarkeitsprobleme auf. Als Reaktion auf diese Probleme hat sich die Microservice-Architektur nach und nach zu einem Trend und einer Lösung für die Entwicklung von Webanwendungen entwickelt. In der Microservice-Architektur ist das Beego-Framework für viele Entwickler zur ersten Wahl geworden. Seine Effizienz, Flexibilität und Benutzerfreundlichkeit sind bei Entwicklern sehr beliebt. In diesem Artikel wird die Verwendung des Beego-Frameworks zur Entwicklung von Webanwendungen mit Microservice-Architektur vorgestellt.

Best Practices zum Erstellen großer Webanwendungen mit Django Best Practices zum Erstellen großer Webanwendungen mit Django Jun 22, 2023 pm 09:52 PM

Mit der Popularität und Entwicklung des Internets sind Webanwendungen zu einem unverzichtbaren und wichtigen Bestandteil der heutigen Gesellschaft geworden. Für umfangreiche Webanwendungen ist ein effizientes, skalierbares und wartbares Framework unerlässlich. Unter solchen Umständen hat sich Django zu einem beliebten Web-Framework entwickelt, da es viele Best Practices übernimmt, um Entwicklern dabei zu helfen, schnell hochwertige Webanwendungen zu erstellen. In diesem Artikel stellen wir einige Best Practices für die Erstellung umfangreicher Webanwendungen mit Django vor.

Wie wählt man bei der Entwicklung von Webanwendungen das geeignete Go-Framework aus? Wie wählt man bei der Entwicklung von Webanwendungen das geeignete Go-Framework aus? Jun 05, 2023 am 11:21 AM

Mit der kontinuierlichen Weiterentwicklung der Internettechnologie sind Webanwendungen zu einem unverzichtbaren Bestandteil des Lebens und der Arbeit der Menschen geworden. Bei der Entwicklung von Webanwendungen kann die Auswahl eines geeigneten Frameworks eine wichtige Rolle bei der Verbesserung der Entwicklungseffizienz, der Beschleunigung der Entwicklung und der Verbesserung der Codequalität spielen. In diesem Artikel wird die Wahl des Go-Frameworks unter drei Gesichtspunkten analysiert: Was ist das Go-Framework, welche Vorteile hat das Go-Framework und wie wählt man ein geeignetes Go-Framework aus? 1. Was ist das Go-Framework? Go ist eine Open-Source-Programmiersprache, die sich ideal zum Erstellen leistungsstarker Webanwendungen eignet.

Erstellen Sie effiziente Webanwendungen mit ThinkPHP6 Erstellen Sie effiziente Webanwendungen mit ThinkPHP6 Jun 21, 2023 pm 05:24 PM

Aufgrund der weit verbreiteten Nutzung von Webanwendungen suchen immer mehr Entwickler nach einer effizienten und schnellen Möglichkeit, ihre Anwendungen zu erstellen. In den letzten Jahren hat sich ThinkPHP6 als hervorragendes PHP-Framework nach und nach zum Marktführer auf dem gesamten Gebiet entwickelt. In diesem Artikel stellen wir vor, wie Sie mit ThinkPHP6 effiziente Webanwendungen erstellen, mit denen Sie verschiedene Herausforderungen in Ihrem Unternehmen problemlos bewältigen können. 1. Einführung in ThinkPHP6 ThinkPHP6 ist ein leichtes, leistungsstarkes PHP-Framework, das Entwicklern Folgendes bietet

Eine vollständige Anleitung zum Erstellen webbasierter Anwendungen mit PHP und SOAP Eine vollständige Anleitung zum Erstellen webbasierter Anwendungen mit PHP und SOAP Jul 30, 2023 am 10:25 AM

Eine vollständige Anleitung zum Erstellen webbasierter Anwendungen mit PHP und SOAP. Im heutigen Internetzeitalter sind webbasierte Anwendungen zu einem wichtigen Werkzeug für die Verwaltung und Interaktion mit Daten geworden. Als leistungsstarke Entwicklungssprache kann PHP nahtlos in andere Technologien integriert werden, während SOAP (Simple Object Access Protocol) als XML-basiertes Kommunikationsprotokoll uns eine einfache, standardmäßige und erweiterbare Methode zum Erstellen von Webdiensten bietet. Dieser Artikel wird Ihnen helfen

See all articles