当前位置: 首页 > news >正文

高校建设网站的特色wordpress关键字

高校建设网站的特色,wordpress关键字,企业宣传片拍摄的公司,宁波网页设计制作我所有的代码都是用go语言编写#xff0c;你可以直接编译后使用#xff0c;不用再有其他的操作。 最近项目实在太忙#xff0c;这几天才有时间#xff0c;这次是重头戏#xff0c;要好好琢磨一下怎么写#xff0c;才能更简洁的说清楚一切。 上一节#xff0c;我们已经安…我所有的代码都是用go语言编写你可以直接编译后使用不用再有其他的操作。 最近项目实在太忙这几天才有时间这次是重头戏要好好琢磨一下怎么写才能更简洁的说清楚一切。 上一节我们已经安装完毕安装好了office web apps。大家只要打开浏览器访问自己的域地址我的是app.datrix3.com如果可以看见这个界面 那就说明你安装无问题了。接下来就要通过Wopi协议将OWA集成到自己的项目中了。 实现在线预览和编辑的Wopi协议 首先你要明白什么是wopi协议相关的资料中WOPI的全称是“Web Application Open PlatformInterface”中文名为“Web应用程序开放平台接口协议”。 要知道office web apps 可不会允许你直接去调用它相关的接口网上的一张图就很好的说明了这点 你可以看见在WOPI中存在WOPI Server或者称之为WOPI Host和WOPI Client两种角色我们可以将WOPI-Client看作我们搭建的OWA服务器 而WOPI Server就是我们要自己开发的Wopi服务在图里可以看见WOPI Client共向WOPI Server进行了两次请求分别是Tell me about the file以及Give me the file所以如果需要实现最简单的在线预览你需要提供两个接口如果要实现在线编辑你还需要一个写入保存的接口。 第一个接口为Tell me about the file我将它定义为GetFileInfo它的url为http://{你自己的owa地址}/api/wopi/files/{file_name} 这里需要你以JSON形式OWA传参参数至少要包括如下信息{ BaseFileName: Sample Document.docx, OwnerId: tylerbutler, Size: 300519, SHA256:17lwXXN0TMwtVJVs4LlgDHEIO06lhXK6zWTUiYms, Version:GIYDCMRNGEYC2MJREAZDCORQGA5DKNZOGIZTQMBQGAVTAMB2GAYA } BaseFileName: 文件名。 OwnerId: 文件所有者的唯一编号。 Size: 文件大小以bytes为单位。 SHA256: 文件的256位bit的SHA-2编码散列内容。Wordweb app必有excel和ppt可以为null Version: 文件版本号文件如果被编辑版本号也要跟着改变。 下面是我的参数 type fileInfo struct {BaseFileName string json:BaseFileNameOwnerId string json:OwnerIdSize int64 json:SizeSHA256 string json:SHA256Version string json:VersionSupportsUpdate bool json:SupportsUpdate,omitemptyUserCanWrite bool json:UserCanWrite,omitemptySupportsLocks bool json:SupportsLocks,omitempty } 你可以看见这里有文件的sizesha256这里要用代码去获取 //获取单个文件的大小 func getSize(path string) int64 {fileInfo, err : os.Stat(path)if err ! nil {panic(err)}fileSize : fileInfo.Size()return fileSize } //获取sha256 func SHA256File(path string) (string, error) {buf, err : ioutil.ReadFile(path)if err ! nil {return , err}h : sha256.Sum256(buf)return base64.StdEncoding.EncodeToString(h[:]), nil } GetFileInfo接口代码 func GetFileInfo(w http.ResponseWriter, r *http.Request) {log.Println(GetFileInfo)vals : r.URL.Query()tmp, ok : vals[access_token]if !ok || len(tmp[0]) 0 {log.Println(access_token not found!)}vars : mux.Vars(r)fileName : vars[file_name]if len(fileName) 0 {log.Println(file_name empty!)}log.Println(file_name: , fileName)testFilePath : path.Join(., fileName)log.Println(PATH: , testFilePath)var info fileInfoinfo.BaseFileName fileNameinfo.OwnerId admininfo.Size getSize(testFilePath)info.SHA256, _ SHA256File(testFilePath)log.Println(debug: sha256_b42: , info.SHA256)// String value: eIMevgBhTd8Iqh1VjWbfWx7wd5vQvmDxlABMfzpTiI//info.SHA256 eIMevgBhTd8Iqh1VjWbfWx7wd5vQvmDxlABMfzpTiIinfo.Version 2222info.UserCanWrite trueinfo.SupportsLocks truew.Header().Set(Content-Type, application/json)json.NewEncoder(w).Encode(info)log.Println(GetFileInfo done...) } 接下来是第二个接口Give me the file,我将它定义为GetFileContent用于WOPI Client获取文件这个接口的url为http://owa服务器地址/api/wopi/files/{file_name}/contents 这个接口通过文件流的方式返回文件,代码如下 func GetFileContent(w http.ResponseWriter, r *http.Request) {log.Println(GetFileContent start.......)vals : r.URL.Query()tmp, ok : vals[access_token]if !ok || len(tmp[0]) 0 {log.Println(access_token not found!)}vars : mux.Vars(r)fileName : vars[file_name]if len(fileName) 0 {log.Println(file_name empty!)}log.Println(file_name: , fileName)testFilePath : path.Join(., fileName)data, err : ioutil.ReadFile(testFilePath)if err ! nil {log.Println(read file err: , err)return}w.Header().Set(Content-type, application/octet-stream)w.Write(data)//json.NewEncoder(w).Encode(info)log.Println(GetFileContent done !) } 如果你需要实现编辑的功能你需要实现一个上传接口POSTfile,这个接口和上面那个url除了请求方式不同其他都是一样的。http://owa服务器地址/api/wopi/files/{file_name}/contents 代码如下 func PostFileContent(w http.ResponseWriter, r *http.Request) {log.Println(PostFileContent start..........)vals : r.URL.Query()tmp, ok : vals[access_token]if !ok || len(tmp[0]) 0 {log.Println(access_token not found!)}vars : mux.Vars(r)fileName : vars[file_name]if len(fileName) 0 {log.Println(file_name empty!)}log.Println(file_name: , fileName)testFilePath : path.Join(., fileName)log.Println(PATH: , testFilePath)body, err : ioutil.ReadAll(r.Body)if err ! nil {log.Println(body empty)}ioutil.WriteFile(testFilePath, body, os.ModeAppend)w.Header().Set(Content-type, application/octet-stream)// get Path,get file} 现在三个接口都已经实现了我们来看一下路由和具体的实现代码 func main() {router : mux.NewRouter()router.HandleFunc(/api/wopi/files/{file_name}, GetFileInfo).Methods(http.MethodGet)router.HandleFunc(/api/wopi/files/{file_name}/contents, GetFileContent).Methods(http.MethodGet)router.HandleFunc(/api/wopi/files/{file_name}/contents, PostFileContent).Methods(http.MethodPost)//开启8080端口err : http.ListenAndServe(:8080, router)log.Println(router)if err ! nil {log.Println(http listen err: , err)} } 接下来你就可以go build然后跑服务了我这里设置的文件路径都是本目录下的也就是说服务在test文件夹下跑起来那么你的office文件也要放在test文件夹下。 最后跑起来服务应该访问的url如下 http://owa服务器地址/we/WordEditorFrame.aspx?WOPISrchttp//本地ip:8080/api/wopi/files/1.docxhttp:/owa服务器地址/p/PowerPointFrame.aspx?PowerPointViewReadingViewWOPISrchttp//本地ip:8080/api/wopi/files/1.pptxhttp://owa服务器地址/x/_layouts/xlviewerinternal.aspx?WOPISrchttp//本地ip:8080/api/wopi/files/1.xlsx
http://www.huolong8.cn/news/292449/

相关文章:

  • 建设化妆品网站的成本天河建设网站
  • 移动网站建设自助建站住房和城乡建设部网站办事大厅
  • 厦门网站建设企业有哪些app软件开发公司
  • 做网站高流量赚广告费wordpress 要求php版本
  • 无锡网站营销公司哪家好商城源代码
  • 合肥网站建设zgkr网站框架搭建设计
  • 网站备案好处个人网页模板html免费
  • 网站建设费走什么费用丰县做淘宝网站
  • 网站如何绑定域名二 网站建设的重要性
  • 中国建设银行官网站下载物流企业网站模板免费下载
  • 个人电脑可以做网站服务器吗深圳网络推广网络
  • 前程无忧招聘网站标记怎么做麦当劳订餐网站 是谁做的
  • 陕西省城乡住房和建设厅网站国外免费空间
  • 网站的建设步骤包括对网站开发实训的建议
  • 行业网站建设方案网站开发专业是干嘛的
  • 网站开发项目实训总结移动互联网开发软件设计
  • 软件开发 网站开发区别建设企业银行登录
  • 网站建设接单吧定制商城网站的费用
  • 新乡网站建设那家好高明网站设计服务
  • 做网站的调研报告昆明网络开发公司
  • 计算机专业论文网站开发关键词设定在网站上
  • 深圳做网站要多少安徽网站优化多少钱
  • 网站建设需要做些什么做便民工具网站
  • 禁止浏览器访问一个网站怎么做软文营销的本质
  • 网站建设 手机app网站服务器租一个月
  • 公司网站建设 阜阳百度推广关键词优化
  • 织梦 去掉我的网站wordpress 侧边栏菜单
  • 溧水区住房建设局网站北京朝阳区哪里有网站开发
  • 证券投资网站建设做网站的大骗子
  • 网站建设公司何去何从违章建设举报网站