將服務(wù)器上的圖片顯示到客戶端瀏覽器
// @Title
// @Description 顯示圖片
// @Paramnum query stringtrue比如:圖片名字20181120164548_75_jd.jpg
// @Success 200
// @router /ShowImage [get]
func (u *FirstpageController) ShowImage() {
u.Ctx.ResponseWriter.Header().Set('Access-Control-Allow-Origin', u.Ctx.Request.Header.Get('Origin'))
filename := u.GetString('num') //獲取需要上傳的文件文件名
//查看文件名類型是否正確
picture := strings.Split(filename,'.') //讀取到字符串,并以.符號分隔開
layout := strings.ToLower(picture[len(picture)-1]) //把字母字符轉(zhuǎn)換成小寫,非字母字符不做出處理,返回此字符串轉(zhuǎn)換為小寫形式的副本。
if layout != 'jpg' { //1533398400000
u.Ctx.WriteString('圖片格式必須為:(jpg)')
panic('圖片格式必須為:(jpg)')
}
//查看本及其上面是否存在需要的圖片
readPath := beego.AppConfig.String('uploadpath')
img:= path.Join(readPath,filename)
u.Ctx.Output.Header('Content-Type', 'image/jpg')
u.Ctx.Output.Header('Content-Disposition',fmt.Sprintf('inline; filename=\'%s\'',img))
file, err := ioutil.ReadFile(img)
if err != nil {
beego.Info('文件不存在')
return
}
u.Ctx.WriteString(string(file))
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
SWAGGER測試效果: 
u.Ctx.Output.Header(“Content-Disposition”,fmt.Sprintf(“inline; filename=”%s'',img))
響應(yīng)頭信息中的Content-Disposition用于告知瀏覽器其獲取到的文件是需要展示與頁面內(nèi)還是需要作為附件保存到用戶本地,如果需要展示在頁面內(nèi),設(shè)置為inline,否則設(shè)置為attachemnt
u.Ctx.Output.Header(“Content-Type”, “image/jpg”)
告訴客戶端本服務(wù)器提供的對象的類型是image/jpg。image/jpg根據(jù)需要改,比如image/png,image/jpg等
u.Ctx.WriteString(string(file))
渲染瀏覽器客戶端
服務(wù)器端保存客戶端發(fā)送的圖片
// @Title
// @Description 意見
// @Param123 query []bytefalse 獲取圖片二進制流出
// @Success 200
// @router /UpALL [post]
func (u *TodayRptController) UpALL() {
u.Ctx.ResponseWriter.Header().Set('Access-Control-Allow-Origin', u.Ctx.Request.Header.Get('Origin'))
tmpfile, fheader, err := u.Ctx.Request.FormFile('123') // u.GetFile('123') 效果相同 “123”是二進制流的鍵名.獲取上傳的文件
if err != nil{
panic(err)
}
defer tmpfile.Close() //關(guān)閉上傳的文件,不然的話會出現(xiàn)臨時文件不能清除的情況
path := '/home/ocena/' + '20181212.jpg' //設(shè)置保存路徑
beego.Info('Header:', fheader.Header) //map[Content-Disposition:[form-data; name='123'; filename='upimage.jpg'] Content-Type:[image/jpeg]]
beego.Info('Size:', fheader.Size) //114353
beego.Info('Filename:', fheader.Filename) //upimage.jpg
u.SaveToFile('123', path)
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
postmain模擬發(fā)送圖片到瀏覽器: 
|