Maison développement back-end Golang Comment implémenter le téléchargement de fichiers par glisser-déposer dans Golang ?

Comment implémenter le téléchargement de fichiers par glisser-déposer dans Golang ?

Jun 05, 2024 pm 12:48 PM
Téléchargement de fichiers golang

如何在 Golang 中实现拖放文件上传?启用中间件;处理文件上传请求;创建拖放区域的 HTML 代码;添加处理拖拽事件的 JavaScript 代码。

如何在 Golang 中实现拖放文件上传?

如何在 Golang 中实现拖放文件上传

介绍

拖放文件上传是一个常见的需求,允许用户轻松地上传文件到 Web 服务器。本文将指导你如何在 Go 中实现拖放文件上传。

技术要求

  • Go 1.16 或更高版本
  • 兼容浏览器的 Web 框架(例如 Echo、Gin)

步骤

1. 启用中间件(适用于 Echo 框架)

import (
    "github.com/labstack/echo/v4/middleware"
)

// Enable upload middleware
r.Use(middleware.BodyLimit("10MB"))

2. 处理请求

创建处理文件上传请求的路由。下面是一个使用 Echo 框架的示例:

import (
    "github.com/labstack/echo/v4"
)

func fileUpload(c echo.Context) error {
    // 获取上传的文件
    file, err := c.FormFile("file")
    if err != nil {
        return err
    }

    // 保存文件
    filename := "path/to/file.ext"
    err = c.SaveFile(file, filename)
    if err != nil {
        return err
    }

    // 返回成功响应
    return c.JSON(http.StatusOK, "File uploaded successfully")
}

3. HTML 代码

创建包含拖放区域的 HTML 代码。如下所示:

<div id="drop-zone" ondragenter="dragEnter(event)" ondrop="drop(event)" ondragover="dragOver(event)">
    <p>Drop files here</p>
</div>

4. JavaScript 代码

添加处理 drag-and-drop 事件的 JavaScript 代码。

function dragEnter(e) {
    e.stopPropagation();
    e.preventDefault();
    e.target.classList.add('drag-over');
}

function dragOver(e) {
    e.stopPropagation();
    e.preventDefault();
    e.target.classList.add('drag-over');
}

function drop(e) {
    e.stopPropagation();
    e.preventDefault();

    const files = e.dataTransfer.files;
    // 这里可以上传文件
    sendFile(files[0]);

    e.target.classList.remove('drag-over');
}

实战案例

这是一个完整的实战案例,展示了如何实现拖放文件上传。

  • 克隆或下载仓库:https://github.com/golang-developer/drag-and-drop-file-upload
  • 编译并运行应用程序:go run main.go
  • 打开浏览器并访问 localhost:8080
  • 将文件拖放到拖放区域
  • 查看控制台以查看上传的文件路径

结论

遵循本文中的步骤,你可以在 Go 中轻松实现拖放文件上传。通过使用合适的中间件、路由、HTML 和 JavaScript 代码,你可以创建用户友好的界面,让用户轻松上传文件到你的服务器。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Quelle est la structure structure vide {} utilisée dans Golang Quelle est la structure structure vide {} utilisée dans Golang Sep 18, 2025 am 05:47 AM

Struct {} est une structure sans champ dans GO, qui occupe des octets zéro et est souvent utilisé dans des scénarios où les données ne sont pas nécessaires. Il est utilisé comme signal dans le canal, comme la synchronisation de la goroutine; 2. Utilisé comme collection de types de valeurs de cartes pour réaliser des vérifications de l'existence clé en mémoire efficace; 3. Récepteurs de méthode sans état définissables, adaptés aux fonctions d'injection de dépendance ou d'organisation. Ce type est largement utilisé pour exprimer le débit de contrôle et effacer les intentions.

Comment lisez-vous et écrivez-vous des fichiers dans Golang? Comment lisez-vous et écrivez-vous des fichiers dans Golang? Sep 21, 2025 am 01:59 AM

GoprovidessIMPLEAFEFFIENTSFILEHandlingusingheosandbufiopackages.toreAdasmallFileEentirely, useos.readfile, wholoadStheContenTiToMeMorySafelyandAutomAtical ManagesFileOperations.ForlARGEFILSORINCREM

Que sont les middleware dans le contexte des serveurs Web Golang? Que sont les middleware dans le contexte des serveurs Web Golang? Sep 16, 2025 am 02:16 AM

Middlewareingowebserversafunction aterttercepthttprequestsboreetheyreachthehandler, permettre à la transformation de la transmission de la transmission; ils enworkbywrapinghandlerstoaddpre-andpost-processingLogicsuchy

Comment gérer les téléchargements de fichiers dans PHP? Comment gérer les téléchargements de fichiers dans PHP? Sep 09, 2025 am 06:18 AM

Tout d'abord, setupanhtmlformWitHencType = "multipart / form-data" andmethod = "post", thenAccessTheFilevia $ _filesInphp, validateitstype, taille, etfoldsecurit

Comment gérez-vous les arrêts gracieux dans une application Golang? Comment gérez-vous les arrêts gracieux dans une application Golang? Sep 21, 2025 am 02:30 AM

GracefulShutdownSingoApplications est en cas de renforcement de la fini auprès, par conduisant en intervenant sur les liens de gits et les procédures de permission, thenstoppingHTTPServersgracetointiaSeshutdownProcedures, thenstoppinghttpServerAlActiveRerequest

Qu'est-ce que CGO et quand l'utiliser à Golang Qu'est-ce que CGO et quand l'utiliser à Golang Sep 21, 2025 am 02:55 AM

CgoenablesGotoCallccode, permettant à Integration avec CLIBRARYSILLOPENSSL, AccessTolow-LevelSystemapis, et performanceOptimization; iTRequireReSIMPORTING "C" WithchedersIncoments, USESC.Function () Syntax, anddemandscarefurmorymanagement.wowever, cogoincinc, cogoincc

Comment créer un maréchaueur / unmarshaller personnalisé pour JSON à Golang Comment créer un maréchaueur / unmarshaller personnalisé pour JSON à Golang Sep 19, 2025 am 12:01 AM

Implémente la sérialisation et la désérialisation JSON des structures GO personnalisables pour Marshaljson et Unmarshaljson, adaptées à la gestion des formats non standard ou compatibles avec les anciennes données. 2. Contrôler la structure de sortie via Marshaljson, comme la conversion des formats de champ; 3. Analyser les données de format spécial via Unmarshaljson, telles que les dates personnalisées; 4. Faites attention à éviter les boucles infinies causées par des appels récursifs et utilisez un alias de type pour contourner les méthodes personnalisées.

Comment utiliser des génériques à Golang Comment utiliser des génériques à Golang Sep 19, 2025 am 05:29 AM

Générications en matière de créabilité, réutilisables et datastiques. Introdingo1.18, ils ont percédédiduduplication parallowingfunctions lienfuncmax [tcomparable] (un, bt) ttoworkacrossmultipletypes, telforconstraintes.typeparametersinsquarebrackets, tcombens.TypepaMetersinsquareBrackets, TCOMASH

See all articles