Golang实战项目-B2C电商平台项目(6)

商品新增中上传图片
  • 商品新增中上传图片使用的是KindEditor的多文件上传组件.文件上传为异步上传方式.可以上传多个文件.
  • 当文件上传后要求服务器端返回数据格式如下.应该是map转换为json而不应该是结构体转换为json
    • error:表示图片上传的状态
    • url:表示图片上传后回显地址
    • message:表示图片上传失败后显示的内容
  • 上传图片域的默认名称为imgFile
  • 多文件上传本质是每次上传一张图片,多次调用同一个控制器
  • 在保存图片时要考虑图片重名的问题,使用随机数+时间戳保证图片名称唯一
import "github.com/gorilla/mux"var (Router              = mux.NewRouter()CurrPath            = "http://localhost:80/"           //当前项目urlHEADER_CONTENT_TYPE = "Content-Type"                   //Content-TypeJSON_HEADER         = "application/json;charset=utf-8" //json
)
  • 在item/TbItemService.go添加函数实现图片上传
func imageUploadService(f multipart.File, h *multipart.FileHeader) map[string]interface{} {m := make(map[string]interface{})b, err := ioutil.ReadAll(f)if err != nil {m["error"] = 1m["message"] = "上传失败,服务器错误"return m}//纳秒时间戳+随机数+扩展名rand.Seed(time.Now().UnixNano())fileName := "static/images/" + strconv.Itoa(int(time.Now().UnixNano())) + strconv.Itoa(rand.Intn(1000)) + h.Filename[strings.LastIndex(h.Filename, "."):]err = ioutil.WriteFile(fileName, b, 0777)if err != nil {m["error"] = 1m["message"] = "上传失败,保存图片时错误"return m}m["error"] = 0m["url"] = commons.CurrPath + fileNamereturn m
}
  • 在item/TbItemController.go添加函数,并配置映射
//图片上传
func imagesUploadController(w http.ResponseWriter, r *http.Request) {file,fileHeader,err:=r.FormFile("imgFile")if err!=nil{m:=make(map[string]interface{})m["error"]=1m["message"]="接收图片失败"b,_:=json.Marshal(m)w.Header().Set(commons.HEADER_CONTENT_TYPE,commons.JSON_HEADER)w.Write(b)return}m:=imageUploadService(file,fileHeader)b,_:=json.Marshal(m)w.Header().Set(commons.HEADER_CONTENT_TYPE,commons.JSON_HEADER)w.Write(b)
}func ItemHandler() {commons.Router.HandleFunc("/showItem", showItemController)commons.Router.HandleFunc("/item/delete", delByIdsController)commons.Router.HandleFunc("/item/instock", instockController)commons.Router.HandleFunc("/item/offstock", offstockController)commons.Router.HandleFunc("/item/imageupload", imagesUploadController)//图片上传
}

Golang实战项目-B2C电商平台项目(6)相关推荐

  1. Golang实战项目-B2C电商平台项目(8)

    Golang实战项目-B2C电商平台项目(8) 商品描述新增 商品描述表(tb_item_desc)和商品表(tb_item)具有主外键关系,商品的主键也是商品描述的主键,使用工具函数生成的主键也当作 ...

  2. 【SSM项目】电商平台项目第5天——商品录入【1】

    课程目标 目标1:完成商品分类功能 目标2:了解电商概念SPU 和SKU 目标3:掌握富文本编辑器的使用 目标4:掌握上传服务器FastDFS 目标5:掌握angularJS图片上传 1.商品分类 1 ...

  3. 【项目精选】基于Spring Boot的综合性B2C电商平台--迷你天猫商城

    迷你天猫商城 点击下载源码 介绍 迷你天猫商城是一个基于Spring Boot的综合性B2C电商平台,需求设计主要参考天猫商城的购物流程:用户从注册开始,到完成登录,浏览商品,加入购物车,进行下单,确 ...

  4. JAVA毕设项目社区电商平台系统(java+VUE+Mybatis+Maven+Mysql)

    JAVA毕设项目社区电商平台系统(java+VUE+Mybatis+Maven+Mysql) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Web ...

  5. 【图解版】B2C电商平台解决方案

    Xmind下载地址 功能架构+技术架构 关键词,B2C,电商平台,解决方案,架构图 展开图 完全展开图

  6. 怎么做好B2C电商平台的粉丝深度与精细化运营?

    电商模式的不断发展,电商模式变的越来越多,B2C就是其中一种,可以说是比较主流的电商模式.那么怎么做好B2C电商平台的粉丝深度与精细化运营?下面是易族智汇javashop为您编辑整理的,欢迎阅读,仅供 ...

  7. b2c电商平台建设不能忽略了这些

    电子商务的发展带动了一批又一批传统行业的变革,在很大程度上,电子商务使企业可以用小的成本进入全球化市场,让中小企业有可能拥有和大企业一样的信息资源,提升企业的竞争力.近期,小编发现, "b2 ...

  8. css网页设计实例代码_大型电商平台设计实例:电商平台项目工程、数据库选型、代码库...

    电商平台微服务体系架构 经过一系列的微服务设计, 下面使用一张维导图完整表示这个电商平台的微服务架构设计模型,如图 3-6 示. 这是一个为简单的电商平台微服务架构设计模型,并且使用了粗粒度的微服务划 ...

  9. 大型电商平台设计实例:电商平台项目工程、数据库选型、代码库

    电商平台微服务体系架构 经过一系列的微服务设计, 下面使用一张维导图完整表示这个电商平台的微服务架构设计模型,如图 3-6 示. 这是一个为简单的电商平台微服务架构设计模型,并且使用了粗粒度的微服务划 ...

  10. 如何对一个B2C电商平台数据建模-3-订单

    综述 假定为一个B2C的电商公司 对于一般的零售或者生产公司来说,订单/采购单收入和成本的最大来源.本章主要讨论如何建立一个通用的销售订单和采购单模型 原文见:数据建模3-订单 逻辑模型 订单相关业务 ...

最新文章

  1. android switcher控件,Android ViewSwitcher 的功能与用法
  2. 转 Hystrix入门指南 Introduction
  3. YOLOv5发布第六个版本,支持一键适配OpenVINO/OpenCV DNN部署
  4. 监控员工离职倾向系统已被下架,网友:劝你善良
  5. FTPClient.listFiles() 放到linux上,返回值为null或数组长度为0
  6. 开关怎么使用_水龙头漏水怎么办?使用时把控开关力度很重要
  7. 荣耀Play3新版曝光:麒麟710A加持 其他配置不变
  8. java在线支付---04_编写易宝支付的客户端加密工具类
  9. 火狐marquee_火狐不支持marquee解决方案
  10. 从零基础入门Tensorflow2.0 ----九、44.5 keras转换成具体函数
  11. Spring Cloud:Security OAuth2 自定义异常响应
  12. C#连接Oracle数据库
  13. 思考(六十四):游戏中的角色ID问题
  14. 杭州电子科技大学acm--2021
  15. jsLint 检查分析
  16. win10重装系统后连不上公司服务器,Win10重装系统后网络连接不了,重装win10系统后不能上网解决方法...
  17. 中年网易,生存像是一种幸运
  18. 计算机技术在建模中的作用,谈计算机在数学建模中的作用
  19. 全球各大运营商代码。方便国外卡的朋友修改运营商显示
  20. 拉格朗日插值法 【python】

热门文章

  1. ios: 画半个椭圆
  2. Python 关系运算符
  3. C程序源代码是如何在硬件上运行的?
  4. JSbridge使用 说明
  5. Jenkins安装和配置
  6. JS调用百度地图——添加基础控件
  7. AAAI主席Rao:AAAI需要国际化,期待更多中国学者助力|AAAI 2017专访
  8. 生活不如意?不如来学习一下GAN(Generative Adversarial Nets) 论文精读
  9. 4类人泡脚要特别小心
  10. SAP 中国 -Business One