0.2.0 • Published 4 years ago

office-webdav v0.2.0

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

office-webdav

Add WebDav abilities to your existing Express project to allow MS Office apps (Word, Excel, PowerPoint) open and edit documents directly on web site via url

See github for the full example

Link examples

ms-word:ofe|u|http://yoursite/yourcontroller/demo.docx

ms-word:ofe|u|http://yoursite/yourcontroller/sessionid/demo.docx

ms-excel:ofe|u|http://yoursite/yourcontroller/demo.xslx

use OfficeWebDavBase abstract

import * as express from 'express';
import { OfficeWebDavBase } from 'office-webdav';
import * as fs from 'fs';

export class FilesRouter extends OfficeWebDavBase {
    public route = "/files"

    constructor() {
        super()
        this.intializeRoutes();
    }

    
    getFile(req: express.Request, res: express.Response, next: express.NextFunction) {
        var filename = req.params.filename;

        var file = __dirname + '/' + filename;

        if (!fs.existsSync(file))
            return res.sendStatus(404);

        //return content type of docx
        res.set('Content-Type', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document')
        res.download(file);
    }

    putFile(req: express.Request, res: express.Response, next: express.NextFunction) {

        var filename = req.params.filename;
        var file = __dirname + '/' + filename;
        req.pipe(fs.createWriteStream(file, { encoding: "binary" })).on('finish', ()=>{
            res.sendStatus(200);
        })
    }
}

use OfficeWebDavRouter router

import * as express from 'express';
import { OfficeWebDavRouter } from 'office-webdav';
import * as fs from 'fs';

export class FilesRouter2 {
    public route = "/files2"
    
    public handler = express.Router()
    
    constructor() {
        this.handler.use(OfficeWebDavRouter(this))
    }

    
    getFile(req: express.Request, res: express.Response, next: express.NextFunction) {
        //...
    }

    putFile(req: express.Request, res: express.Response, next: express.NextFunction) {
        //...
    }
}

use with javascript

var express = require('express');
var router = express.Router();
var officeWebDav = require('office-webdav')
var fs = require('fs')
/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});


module.exports.getFile = (req, res) => {
  var filename = req.params.filename;

  var file = __dirname + '/' + filename;

  if (!fs.existsSync(file))
      return res.sendStatus(404);

  //return content type of docx
  res.set('Content-Type', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document')
  res.download(file);
}

module.exports.putFile = (req, res) => {

  var filename = req.params.filename;
  var file = __dirname + '/' + filename;
  req.pipe(fs.createWriteStream(file, { encoding: "binary" })).on('finish', ()=>{
      res.sendStatus(200);
  })
}

router.use(officeWebDav.OfficeWebDavRouter(this))

module.exports = router;
0.2.0

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago

0.0.1

4 years ago