URL에 TXT 정보 입력

9970 단어 Go
다음 글도 소개했습니다. 이전에 URL로 저장할 필요가 없는 텍스트 공유 서비스를 만든 적이 있습니다.
Ionic 기반 개인 제품 개발의 뒷면 상황

그때의 내용은 URL에 모든 텍스트 정보를 넣는 대단한 기교였지만 반년 이상이 지나자 그때의 처리를 잊지 않기 위해 비망록으로 썼다.

프로세스


Golang의 Base64 인코딩에 URLEncoding이 있다니.
base64.NewEncoder(base64.URLEncoding, &buf64)
이 녀석을 사용하면 URL이 안전한 Base64 인코딩을 할 수 있습니다.또한 Golang에는 표준 gzip 라이브러리가 있습니다.따라서 이것들을 조합하면 다음과 같은 조작을 할 수 있다.
  • 프로그램을 통해 텍스트를 수신합니다
  • gzip으로 텍스트를 압축합니다
  • URL을 사용하여 Base64 인코딩을 안전하게 수행합니다
  • URL 매개 변수로 설정합니다
  • 상기 내용을 실현하기 위해 아래 Golang은 텍스트 → gzip → Base64의 원본 코드입니다.
    package main
    
    import (
        "bytes"
        "compress/gzip"
        "encoding/base64"
        "fmt"
        "io/ioutil"
        "strings"
    )
    
    func main() {
        text := `
              ///////////////////////// ------\/////////ヽ
           ////:///////////////>  "´        ∨////////∧
          .///////////////> ´                ∨////////∧
         ///////////> ´                   ∨////////∧
         |///////,〃/                       i//////////ハ
         |////////i/            _  --――― 、--}//////////∧
         |////////|            ´    ト.     ヽ \'/////////∧
         |////////|      ..  イ        i \   ノ  ', \////////∧
         |////////|   .   ´i   i         ー|-- 斗、.    ',  \///////∧
         |////////| /    |  ハ    ',  ∧! ,ィf=ミ、   ',ー― ///////∧
         |////////|'   .、_|..斗七ヽト、   ヽ| u   {::♥::} ゞ \ ',i///////////,∧
         |////////|      |/i/,.ィf=ミ ヽト、!|   `¨¨¨´/  /\!.マニ ア//////,∧
         |////////ハ     / .ィ f:::♥ノ   | / ///// / i  |=イ/////////∧
         |////////,∧    /{ ゞ `¨´ /, j/ /// ./イ /  .|  i  i///////////
         |/////////|.ヘ  / 乂 /////      u /   |  |  i!///////////
         |/////////>j/   \          _   j/|  .| ∧!  !///////////
         |/////// ∠ィ ヘ     >_      ,ィv´  _)  / |  |/:::::∧ .|V//////////
         |//////ゝ---一 ヘ  ゝ----' u   ゝ- ´    /i .|  |:::::::::::∧!::∨/////////
         |//////////| i ∧    ',≧=-   __ .イ !ハ  |:::::::::::::_:::乂////////
         |//////////| ∧ ∧   ト{    }    i    {ーヘ !´ ̄ / アニ≧= ---
         |//////////|/::::ヘ.  ',   |从 __ノi    ',   ノ  ヘ|  / /ニニニニニニ
         |//////////|:::::::::::\{ヘ  .|-<   ゝ    r 、 -、     /  /ニニニニニニニ
         |/////////ノ==-<   ', |         r'   く      ./ニニニニニニニニ
         .ノ//>≦ニニニニニ\  }/          ` ´ \\    /ニニニニニニニニ
        .///ニニニニニニニニニ\              `´    {ニニニニニニニニニ
        .イニニニニニニニニニニニヽ                  /ニニニニニニニニニ
        `
        if b64, err := EncodeEncodeBase64Base64(text); err != nil {
            fmt.Println("err:", err)
        } else {
            fmt.Println(b64)
            if aa, err := DecodeBase64Gzip(b64); err != nil {
                fmt.Println("err:", err)
            } else {
                fmt.Println(string(aa))
            }
        }
    
    }
    
    func EncodeEncodeBase64Base64(str string) (string, error) {
        var buf64 bytes.Buffer
        wb64 := base64.NewEncoder(base64.URLEncoding, &buf64)
        wgz := gzip.NewWriter(wb64)
        _, err := wgz.Write([]byte(str))
        if err != nil {
            return "", err
        }
        wgz.Close()
        wb64.Close()
        sRequest64 := string(buf64.Bytes())
        return sRequest64, nil
    }
    
    func DecodeBase64Gzip(b64 string) ([]byte, error) {
        if r, err := gzip.NewReader(base64.NewDecoder(base64.URLEncoding, strings.NewReader(b64))); err != nil {
            fmt.Println(err)
            return nil, err
        } else {
    
            if s, err := ioutil.ReadAll(r); err != nil {
                fmt.Println(err)
                return nil, err
            } else {
                return s, nil
            }
        }
    }
    

    총결산


    위의 소스 코드를 사용하여 원하는 텍스트를 URL에 포함할 수 있습니다.또한 상기 원본 코드를 이용하여 웹 응용 프로그램 측면에 텍스트를 표시하는 처리가 따로 기록되어 있다

    좋은 웹페이지 즐겨찾기