ashx 获取上传的文件_go:获取文件的名称、前缀、后缀和上传

8a65676c2635b6b8ed824c81452230e2.png
go_lang1

示例代码:

package main

import (
    "fmt"
    "path"
)
func main() {
    filename := "device/sdk/CMakeLists.txt"
    filenameall := path.Base(filename)    
    filesuffix := path.Ext(filename)
    fileprefix := filenameall[0:len(filenameall) - len(filesuffix)]
    //fileprefix, err := strings.TrimSuffix(filenameall, filesuffix)

    fmt.Println("file name:", filenameall)
    fmt.Println("file prefix:", fileprefix)
    fmt.Println("file suffix:", filesuffix)
}

执行结果:

file name: CMakeLists.txt
file prefix: CMakeLists
file suffix: .txt

path.Base(filename):获取不包含目录的文件名

path.Ext(filename):获取文件后缀

文件前缀 可以使用切片的方式获取:

fileprefix := filenameall[0:len(filenameall) - len(filesuffix)]

也可以使用 strings.TrimSuffix() 进行获取:

import "strings"

fileprefix, err := strings.TrimSuffix(filenameall, filesuffix)

Go文件上传

package main

import (
  "bytes"
  "fmt"
  "io"
  "io/ioutil"
  "mime/multipart"
  "net/http"
  "os"
  "path"
)

func postFile(filename string, targetUrl string) error {
  bodyBuf := &bytes.Buffer{}
  bodyWriter := multipart.NewWriter(bodyBuf)

  // 关键的一步操作
  fileWriter, err := bodyWriter.CreateFormFile("file", path.Base(filename))
  if err != nil {
    fmt.Println("error writing to buffer")
    return err
  }

  // 打开文件句柄操作
  fh, err := os.Open(filename)
  if err != nil {
    fmt.Println("error opening file")
    return err
  }
  defer fh.Close()

  // iocopy
  _, err = io.Copy(fileWriter, fh)
  if err != nil {
    return err
  }

  contentType := bodyWriter.FormDataContentType()
  bodyWriter.Close()

  resp, err := http.Post(targetUrl, contentType, bodyBuf)
  if err != nil {
    return err
  }
  defer resp.Body.Close()
  resp_body, err := ioutil.ReadAll(resp.Body)
  if err != nil {
    return err
  }
  fmt.Println(resp.Status)
  fmt.Println(string(resp_body))
  return nil
}

// sample usage
func main() {

  targetUrl  := "http://local:8880/upload"
  if len(os.Args) > 1 {

    filename := os.Args[2]
    postFile(filename, targetUrl)
    // do something with command
  } else {
    // No arguments were specified!
    fmt.Println("没有传入图片地址")
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
控件UpdloadFile文件上传eg: string newfilename = file_uploadid.FileName; string size = file_uploadid.PostedFile.ContentLength.ToString(); string type = file_uploadid.PostedFile.ContentType; string type2 = newfilename.Substring(newfilename.LastIndexOf(".") + 1); string path = ""; try { if (file_uploadid.PostedFile != null && file_uploadid.PostedFile.FileName != "") { string hzm = System.IO.Path.GetExtension(file_uploadid.PostedFile.FileName);//后缀名 如 .doc string[] a = { ".txt", ".jpg", ".jpeg", ".gif", ".png", ".docx", ".doc", ".xlsx", ".xls", ".rar", ".zip", ".pdf" };//设定好了的格式 if (!a.Contains(hzm)) { Response.Write("文件格式不正确"); } else { int defaulsize = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["filesize"]);//得设置的默认文件的大小 int filesize = (file_uploadid.PostedFile.ContentLength) / 1024; //上传文件的大小,单位为bytes if (filesize < defaulsize) { #region 对文件进行操作 newfilename = DateTime.Now.ToString("yyyyMMddHHmmssfff") + hzm;//文件的新名字 如20120711105734222.doc path = System.Web.HttpContext.Current.Server.MapPath("~/UploadFile//");//文件保存的路径 if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } #endregion } else { //超过了文件的大小 Response.Write("上传文件超过了3000M,请重新选择 "); } } } } catch (Exception) { Response.Write("文件格式不正确"); } #endregion if (newfilename != "") { file_uploadid.SaveAs(path + newfilename); //保存文件 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值