当前位置:   article > 正文

Beego 学习笔记11:文件的上传下载

type="file" name="image

文件的上传和下载

1->文件的上传

文件的上传,采用的是uploadify.js这个插件.

本事例实现的是上传图片文件,其他的文件上传也一样。

2->文件的下载

文件的下载有两个实现的方式:

1->url路径指向文件的路径,浏览器自行下载。但此方法存在缺陷:图片文件,text,pdf等文件会在浏览器中自动显示,不会执行下载功能

2->使用beego带有的下载方法,执行下载功能

3>新建一个fileopt.go控制器,具体代码如下:

  

  1. package controllers
  2. import (
  3. "fmt"
  4. "strings"
  5. "path"
  6. "github.com/astaxie/beego"
  7. )
  8. type FileOptUploadController struct {
  9. beego.Controller
  10. }
  11. //上传下载文件的页面
  12. func (c *FileOptUploadController) Get() {
  13. c.TplName = "fileopt.html"
  14. }
  15. //上传文件
  16. func (this *FileOptUploadController) Post() {
  17. //image,这是一个key值,对应的是html中input type-‘file’的name属性值
  18. f, h, _ := this.GetFile("image")
  19. //得到文件的名称
  20. fileName := h.Filename
  21. arr := strings.Split(fileName, ":")
  22. if len(arr) > 1 {
  23. index := len(arr) - 1
  24. fileName = arr[index]
  25. }
  26. fmt.Println("文件名称:")
  27. fmt.Println(fileName)
  28. //关闭上传的文件,不然的话会出现临时文件不能清除的情况
  29. f.Close()
  30. //保存文件到指定的位置
  31. //static/uploadfile,这个是文件的地址,第一个static前面不要有/
  32. this.SaveToFile("image", path.Join("static/uploadfile",fileName))
  33. //显示在本页面,不做跳转操作
  34. this.TplName = "fileopt.html"
  35. }
  36. //下载文件
  37. type FileOptDownloadController struct {
  38. beego.Controller
  39. }
  40. func (this *FileOptDownloadController) Get() {
  41. //图片,text,pdf文件全部在浏览器中显示了,并没有完全的实现下载的功能
  42. //this.Redirect("/static/img/1.jpg", 302)
  43. //第一个参数是文件的地址,第二个参数是下载显示的文件的名称
  44. this.Ctx.Output.Download("static/img/1.jpg","tu1.jpg")
  45. }

  

4>新建一个html页面,名为fileopt.html,其代码如下:

  1. <!DOCTYPE html>
  2.  
  3. <html>
  4.       <head>
  5.         <title>首页 - 用户列表页面</title>
  6.         <link rel="shortcut icon" href="/static/img/favicon.png" />
  7.   <link rel="stylesheet" href="/static/uploadify/uploadify.css" rel="stylesheet"/>
  8. <script type="text/javascript" src="/static/js/jquery-2.1.1.min.js"></script> 
  9. <script src="/static/uploadify/jquery.uploadify.min.js"></script>
  10.       </head>    
  11.     <body>
  12. <!--上传部分-->
  13. <form method="POST" action="/Home/UploadFile" enctype="multipart/form-data">
  14. <input type="file" name="image" id="file_upload">
  15. <div id="imgdiv" style="display:none;">
  16. </div>
  17. </form>
  18. <!--下载图片-->
  19. <button value="下载图片" οnclick="download()">下载图片</button>
  20. <!--JS部分-->
  21. <script type="text/javascript">
  22. //页面的初始化
  23. $(function () {
  24. $("#file_upload").uploadify({ //绑定元素
  25. 'fileObjName':'image',//html input标签的name属性的值吧。
  26. 'debug':false,
  27. 'auto':true, //自动上传
  28. 'multi':true,
  29. 'removeCompleted':false, //上传完成以后是否保存进度条
  30. 'buttonText':'选择文件',
  31. 'cancelImg':'/static/uploadify/uploadify-cancel.png',
  32. 'swf':'/static/uploadify/uploadify.swf', //必须设置 swf文件路径
  33. 'uploader':'/Home/FileOpt', //必须设置,上传文件触发的url
  34. 'fileTypeDesc':'FileType',
  35. 'fileTypeExts':'*.jpg;*.jpge;*.gif;*.png;',
  36. 'multi':true,
  37. 'onUploadSuccess': function (file, data, response) {
  38. $("#imgdiv").show();
  39. var html='<image src="/static/uploadfile/'+file.name+'" style="height:150px;width:150px;margin:20px;"/>';
  40. $("#imgdiv").append(html);
  41. }
  42. });
  43. });
  44. //下载图片
  45. function download(){
  46. window.location.href="/Home/FileDown";
  47. }
  48. </script>
  49.     </body>
  50. </html>

  

5>在路由中添加路由

  1. package routers
  2. import (
  3. "secondweb/controllers"
  4. "github.com/astaxie/beego"
  5. )
  6. func init() {
  7. beego.Router("/", &controllers.MainController{})
  8. beego.Router("/Home/PageData", &controllers.UserController{})
  9. beego.Router("/Home/PageNextData", &controllers.YonghuController{})
  10. beego.Router("/Home/Index", &controllers.PageController{})
  11. beego.Router("/Home/EasyUI", &controllers.EasyUIController{})
  12. beego.Router("/Home/EasyUIData", &controllers.EasyUIDataController{})
  13. beego.Router("/Home/FileOpt", &controllers.FileOptUploadController{})
  14. beego.Router("/Home/FileDown", &controllers.FileOptDownloadController{})
  15. }

  

6>项目的结构如下:

 

 

7>执行的效果如下:

1->文件操作的页面如下,路由如下:

 

 

 

 

2->点击选择文件按钮,选择需要上传的图片,点击打开按钮,效果如下:

 

3->点击下载图片按钮,浏览器下载一张指定的图片

 

 

8>下一章,将文件内容的读取。

转载于:https://www.cnblogs.com/tudaogaoyang/p/8021474.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/509404
推荐阅读
相关标签
  

闽ICP备14008679号