返回顶部
首页 > 资讯 > 后端开发 > GO >Go语言实现文件上传
  • 405
分享到

Go语言实现文件上传

2024-04-02 19:04:59 405人浏览 八月长安
摘要

本文实例为大家分享了Go实现文件上传的具体代码,供大家参考,具体内容如下 文件上传:客户端把上传文件转换为二进制流后发送给服务器,服务器对二进制流进行解析 html表单(fORM)e

本文实例为大家分享了Go实现文件上传的具体代码,供大家参考,具体内容如下

文件上传:客户端把上传文件转换为二进制流后发送给服务器,服务器对二进制流进行解析

html表单(fORM)enctype(Encode Type)属性控制表单在提交数据到服务器时数据的编码类型.

enctype=”application/x-www-form-urlencoded” 默认值,表单数据会被编码为名称/值形式

  • enctype=”multipart/form-data” 编码成消息,每个控件对应消息的一部分.请求方式必须是post
  • enctype=”text/plain” 纯文本形式进行编码的

HTML模版内容如下(在项目/view/index.html)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>文件上传</title>
</head>
<body>
<form action="upload" enctype="multipart/form-data" method="post">
    用户名:<input type="text" name="username"/><br/>
    密码:<input type="file" name="photo"/><br/>
    <input type="submit" value="注册"/>
</form>
</body>
</html>

服务端可以使用FormFIle(“name”)获取上传到的文件,官方定义如下

// FormFile returns the first file for the provided form key.
// FormFile calls ParseMultipartForm and ParseForm if necessary.
func (r *Request) FormFile(key string) (multipart.File, *multipart.FileHeader, error) {
    if r.MultipartForm == multipartByReader {
        return nil, nil, errors.New("Http: multipart handled by MultipartReader")
    }
    if r.MultipartForm == nil {
        err := r.ParseMultipartForm(defaultMaxMemory)
        if err != nil {
            return nil, nil, err
        }
    }
    if r.MultipartForm != nil && r.MultipartForm.File != nil {
        if fhs := r.MultipartForm.File[key]; len(fhs) > 0 {
            f, err := fhs[0].Open()
            return f, fhs[0], err
        }
    }
    return nil, nil, ErrMissingFile
}

multipart.File是文件对象

// File is an interface to access the file part of a multipart message.
// Its contents may be either stored in memory or on disk.
// If stored on disk, the File's underlying concrete type will be an *os.File.
type File interface {
    io.Reader
    io.ReaderAt
    io.Seeker
    io.Closer
}

封装了文件的基本信息

// A FileHeader describes a file part of a multipart request.
type FileHeader struct {
    Filename string                    //文件名
    Header   textproto.MIMEHeader    //MIME信息
    Size     int64                    //文件大小,单位bit

    content []byte                    //文件内容,类型[]byte
    tmpfile string                    //临时文件
}

服务器端编写代码如下

  • 获取客户端传递后的文件流,把文件保存到服务器即可
package main

import (
   "net/http"
   "fmt"
   "html/template"
   "io/ioutil"
)


func welcome(rw http.ResponseWriter, r *http.Request) {
   t, _ := template.ParseFiles("template/html/upload.html")
   t.Execute(rw, nil)
}


func upload(rw http.ResponseWriter, r *http.Request) {
   //获取普通表单数据
   username := r.FormValue("username")
   fmt.Println(username)
   //获取文件流,第三个返回值是错误对象
   file, header, _ := r.FormFile("photo")
   //读取文件流为[]byte
   b, _ := ioutil.ReadAll(file)
   //把文件保存到指定位置
   ioutil.WriteFile("D:/new.png", b, 0777)
   //输出上传时文件名
   fmt.Println("上传文件名:", header.Filename)
}

func main() {
   server := http.Server{Addr: "localhost:8899"}

   http.HandleFunc("/", welcome)
   http.HandleFunc("/upload", upload)

   server.ListenAndServe()
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

您可能感兴趣的文档:

--结束END--

本文标题: Go语言实现文件上传

本文链接: https://lsjlt.com/news/120963.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Go语言实现文件上传
    本文实例为大家分享了Go实现文件上传的具体代码,供大家参考,具体内容如下 文件上传:客户端把上传文件转换为二进制流后发送给服务器,服务器对二进制流进行解析 HTML表单(form)e...
    99+
    2024-04-02
  • GO语言原生实现文件上传功能
    本文实例为大家分享了GO原生实现文件上传功能的具体代码,供大家参考,具体内容如下 写在前面 最近在学习go,发现实践才是检验真理的唯一标准。在不引入任何框架的基础上,利用go语言实现...
    99+
    2024-04-02
  • Go 语言实现 HTTP 文件上传和下载
    前言: 近我使用 Go 语言完成了一个正式的 Web 应用,有一些方面的问题在使用 Go 开发 Web 应用过程中比较重要。过去,我将 Web 开发作为一项职业并且把使用不同的语言和...
    99+
    2024-04-02
  • GO语言实现文件上传的示例代码
    目录前言文件上传表单操作服务端操作流程实现小结前言 最近在写一个文件上传的功能,现在来进行整理总结一下go语言如何上传文件的,本文主要分享一下golang实现文件上传的流程和具体代码...
    99+
    2024-04-02
  • GO实现文件上传操作
    本文实例为大家分享了GO实现文件上传操作的具体代码,供大家参考,具体内容如下 由于需求中有文件上传这一个需求,在这里我们就学习一下go语言如何上传文件。本文主要通过表单的方式进行文件...
    99+
    2024-04-02
  • Go实现文件分片上传
    Go语言在写HTTP服务程序时,会经常用到文件上传和文件下载,文件上传和文件下载都可以用http包,默认的功能基本上够用了。http包支持文件下载的断点续传和进度显示,文件上传貌似不...
    99+
    2024-04-02
  • 如何使用Go语言和Redis实现文件上传下载功能
    如何使用Go语言和Redis实现文件上传下载功能简介在现代Web应用开发中,文件上传和下载是常见的功能需求。本文将介绍如何使用Go语言和Redis来实现文件上传和下载功能,并提供具体的代码示例。一、文件上传功能实现文件上传功能是指将客户端的...
    99+
    2023-10-26
    Go语言 redis 文件传输
  • Go实现文件上传和下载
    本文实例为大家分享了Go实现文件上传和下载的具体代码,供大家参考,具体内容如下 一.文件上传 文件上传:客户端把上传文件转换为二进制流后发送给服务器,服务器对二进制流进行解析 HTM...
    99+
    2024-04-02
  • Spring boot实现文件上传实例(多文件上传)
    文件上传主要分以下几个步骤:(1)新建maven java project;(2)在pom.xml加入相应依赖;(3)新建一个表单页面(这里使用thymleaf);(4)编写controller;(5)测试;(6)对上传的文件做一些限制;(...
    99+
    2023-05-31
    spring boot 文件上传
  • Go语言如何实现读取文件
    这篇文章主要介绍“Go语言如何实现读取文件”,在日常操作中,相信很多人在Go语言如何实现读取文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Go语言如何实现读取文件”的疑惑有所帮助!接下来,请跟着小编一起来...
    99+
    2023-07-05
  • Node.js实现文件上传
    在工作中碰到了这样的需求,需要用nodejs 来上传文件,之前也只是知道怎么通过浏览器来上传文件, 用nodejs的话, 相当于模拟浏览器的行为。 google 了一番之后, 明白了浏览器无非就是利用htt...
    99+
    2022-06-04
    文件上传 Node js
  • vue实现文件上传
    本文实例为大家分享了vue实现文件上传的具体代码,供大家参考,具体内容如下 记录问题,方便回顾 1、使用elementUI的 el-upload插件进行上传。 2、使用input。 ...
    99+
    2024-04-02
  • PHP实现文件上传
    上传文件的必备三个条件: 上传到后台的文件 method = "post";(不可以为get方法) enctype = "multipart/form-data";(注意哦,是data,不是date) 三者缺一不可 后台PHP的$_FIL...
    99+
    2023-09-02
    php 服务器 开发语言
  • ASP.NET实现文件上传
    本文实例为大家分享了ASP.NET实现文件上传的具体代码,供大家参考,具体内容如下 .NET中C/S和B/S上传文件不同 B/S中文件上传和C/S中的文件上传性质完全不一样 在C/S...
    99+
    2024-04-02
  • 如何处理Go语言中的并发文件上传问题
    在Go语言中处理并发文件上传问题时,可以使用goroutine来实现并发上传。下面是一个简单的示例代码:```gopackage m...
    99+
    2023-10-09
    Go语言
  • 如何处理Go语言中的并发文件上传问题?
    如何处理Go语言中的并发文件上传问题?随着互联网的发展,文件上传在日常开发中变得越来越常见。而在文件上传的过程中,处理多个文件的并发上传问题成为了一个关键的考虑因素。本文将介绍如何使用Go语言来处理并发文件上传问题,并提供具体的代码示例。一...
    99+
    2023-10-22
    文件上传 Go语言 并发处理
  • Go语言中怎么实现文件操作
    今天就跟大家聊聊有关Go语言中怎么实现文件操作,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。打开和关闭文件package main  import&nb...
    99+
    2023-06-15
  • Python+django实现文件上传
    1、文件上传(input标签) (1)html代码(form表单用post方法提交) <input class="btn btn-primary col-md-1" style="margin:...
    99+
    2022-06-04
    文件上传 Python django
  • Java实现FTP文件上传
    目录一、配置FTP文件服务器 FTP两种模式简介 PORT(主动模式) Passive(被动模式) 1、安装vsftpd 2、配置vsftpd 3、重启启动服务 4、登录二、java...
    99+
    2024-04-02
  • Javaselenium上传文件的实现
    目录下载和安装AutoIt1.打开AutoIt的官网下载下载和安装AutoIt 文件上传是自动化中棘手的部分,目前selenium并没有提供上传的实现api,所以知道借助外力来完成,...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作