Beego 學習筆記12:文件的操做

文件的操做javascript

1>     此事例操做的是text文件css

2>     文件的操做有讀取text內容,將內容寫入到文件中,刪除文件,建立文件html

3>     新建一個控制器,名爲rwfile.go.其代碼以下:java

package controllers

import (
	"fmt"
	"os"
	"io/ioutil"
	"github.com/astaxie/beego"
)

type ReadController struct {
	beego.Controller
}

//上傳下載文件的頁面
func (c *ReadController) Get() {
	
	c.TplName = "filerw.html"
}
//建立文件
type CreateController struct {
	beego.Controller
}
func (c *CreateController) Post(){
     //建立文件
	file, error := ioutil.TempFile("static/txtfile", "tmp")
	//文件關閉
	defer file.Close()
	if error != nil {
	   fmt.Println("建立文件失敗")
	}
	c.Data["json"]=map[string]interface{}{"data":file.Name()};
	c.ServeJSON();
}
//寫入文件
type WriteController struct {
	beego.Controller
}
func (c *WriteController) Post() { 
	confPath := c.GetString("path")
	info:=c.GetString("info")
	content,err := parseWriteConfig(confPath,info)
	if err != nil {
		fmt.Println(err)
    }
	fmt.Println(content)
	c.Data["json"]=map[string]interface{}{"data":string(content)};
	c.ServeJSON();
}

//寫入text文件內容  
func parseWriteConfig(confPath,info string) ([]byte,error) {
	fl, err := os.OpenFile(confPath, os.O_APPEND|os.O_CREATE, 0644)
	if err != nil {
		fmt.Println("打開文件失敗")
	}
	defer fl.Close()
	byteinfo:=[]byte (info)
	n, err := fl.Write(byteinfo)
	if err == nil && n < len(byteinfo) {
		fmt.Println("寫入失敗")
		fmt.Println(err)
	}
	return byteinfo, err
}

//讀取文件內容
func (c *ReadController) Post() { 
	confPath := c.GetString("path")
	fmt.Println("文件的地址:")
	fmt.Println(confPath)
	content,err := ReadFile(confPath)
	if err != nil {
		c.Data["data"]="";
		fmt.Println(err) 
    } else{
		c.Data["data"]=content;
	}
	fmt.Println(content)
	c.Data["json"]=map[string]interface{}{"data":content};
	c.ServeJSON();
}
//解析text文件內容  
func ReadFile(path string) (str string, err error) {
	//打開文件的路徑
	fi, err := os.Open(path)
	if err!=nil{
		fmt.Println("打開文件失敗")
		fmt.Println(err)
	}
	defer fi.Close()
	//讀取文件的內容
	fd, err := ioutil.ReadAll(fi)
	if err!=nil{
		fmt.Println("讀取文件失敗")
		fmt.Println(err)
	}
    str = string(fd)
    return str,err
}
//刪除文件
type DeleteController struct {
	beego.Controller
}
func (c *DeleteController) Post(){
	isdel:=false;
	file:=c.GetString("path");           //源文件路徑
    err := os.Remove(file)               //刪除文件
    if err != nil {
        //刪除失敗,輸出錯誤詳細信息
        fmt.Println(err)
	}else {
        //若是刪除成功則輸出 
		isdel=true
    }
	c.Data["json"]=map[string]interface{}{"data":isdel};
	c.ServeJSON();
}

  

4>     新建一個filerw.html頁面做爲顯示.其代碼以下:jquery

 

<!DOCTYPE html>
 
<html>
      <head>
        <title>首頁 - 用戶列表頁面</title>
        <link rel="shortcut icon" href="/static/img/favicon.png" /> 
        <link rel="stylesheet" href="/static/bootstrap/css/bootstrap.css"/>
        <script type="text/javascript" src="/static/js/jquery-2.1.1.min.js"></script> 
        <script type="text/javascript" src="/static/bootstrap/js/bootstrap.min.js"></script> 
      </head>       
    <body>
       <div class="container">
<!--建立text文件-->
<div style="width:100%;height:50px;">
        <button onclick="createtxt()" class="btn btn-primary">建立text文件</button>
        <label id="txtname"></label>
     </div>
      <!--寫入文件-->
      <div style="width:100%;height:300px;margin-top:20px;">
          <label>輸入內容:</label>
          <textarea id="writeinfo" style="width:50%;height:200px;" class="form-control"></textarea>
          <button value="寫入內容" onclick="txtwrite()" class="btn btn-primary" style="margin-top:20px;">寫入內容</button>
      </div>
     
      <!--讀取文件內容部分-->
      <div style="width:100%;height:300px;">
          <button value="讀取內容" onclick="txtread()" class="btn btn-primary" style="margin-bottom:20px;">讀取內容</button>            
          <textarea id="readinfo" style="width:50%;height:200px;" class="form-control" ></textarea>
      </div>
         
      <button onclick="deletetxt()" class="btn btn-primary">刪除text文件</button>

       </div>
       
        <!--JS部分-->
        <script type="text/javascript">
        
          //建立text文件
          function createtxt(){
            $.ajax({
               type:'post',
               url:'/Home/FileCreate',
               data:{},
               success:function(result){
                   console.log('獲取的數據')
                   console.log(result)
                 $("#txtname").html(result.data);
               } 
            })

          }
          //寫入文件的內容
          function txtwrite(){
            $.ajax({
               type:'post',
               url:'/Home/FileWrite',
               data:{
                   "info":$("#writeinfo").val(),
                   "path":$("#txtname").html()
               },
               success:function(result){
                   console.log('獲取的數據')
                   console.log(result)
                 $("#showinfo").html(result.data);
               } 
            })
          }
          //讀取文件的內容
          function txtread(){
            $.ajax({
               type:'post',
               url:'/Home/FileRead',
               data:{
                 "path":$("#txtname").html()
               },
               success:function(result){
                  console.log('獲取的數據')
                  console.log(result)
                  $("#readinfo").html(result.data);
               } 
            })
          }
          
           //刪除text文件
           function deletetxt(){
            $.ajax({
               type:'post',
               url:'/Home/FileDelete',
               data:{
                   "path": $("#txtname").html()
               },
               success:function(result){
                   console.log('獲取的數據')
                   console.log(result)
                   if(result.data){
                      $("#txtname").html('');
                      alert("刪除成功");
                   }else{
                      alert("刪除失敗"); 
                   }                 
               } 
            })

          }
        </script>
    </body>
</html>

  

5>     在路由器router.go中添加路由.具體代碼以下:git

package routers

import (
	"secondweb/controllers"
	"github.com/astaxie/beego"
)

func init() {
	beego.Router("/", &controllers.MainController{})
	beego.Router("/Home/PageData", &controllers.UserController{})
	beego.Router("/Home/PageNextData", &controllers.YonghuController{})
	beego.Router("/Home/Index", &controllers.PageController{})
	beego.Router("/Home/EasyUI", &controllers.EasyUIController{})
	beego.Router("/Home/EasyUIData", &controllers.EasyUIDataController{})
	beego.Router("/Home/FileOpt", &controllers.FileOptUploadController{})
	beego.Router("/Home/FileDown", &controllers.FileOptDownloadController{})
	beego.Router("/Home/FileRead", &controllers.ReadController{})
	beego.Router("/Home/FileWrite", &controllers.WriteController{})
	beego.Router("/Home/FileCreate", &controllers.CreateController{})
	beego.Router("/Home/FileDelete", &controllers.DeleteController{})
}

  

6>     運行效果以下:github

1->在瀏覽器中輸入路由以下,具體的效果以下:web

 

 

2->點擊建立text文件,新增一個文件ajax

 

 

 

3->輸入內容,點擊寫入內容,將內容寫入到新建的文件中json

 

 

4->點擊讀取內容,將寫入的內容讀取出來

 

 

5->點擊刪除文件,刪除新增的文件

 

 

 

7>     下一章,講api的編寫。

相關文章
相關標籤/搜索