websvr 静态文件访问问题


发布者 zkwap  发布时间 1415870390068
关键字 提问 
home目录下的文件可以直接访问,非home目录下的js css 图片等 静态文件怎么写路由使其能访问呢


看了下源码没办法,只能这么写了,
app.get('/data/upload/',function(req,res){
console.log(req.url);
res.sendRootFile(req.url);
});

用的sendRootFile发送文件,求老大给好方法









回复 (4)
  • #
  • #1 zkwap 1415872682619

    直接写sendRootFile还不行,可能文件不存在浏览器会一直等待

  • #2 ourjs 1415873851538

    home是web的根目录, root是脚本执行的根目录

    网页程序最好不要直接访问home以外的目录,否则这样不安全。

    非要这样的话你可以在home目录下创建一个到/data/upload的软链接;或者在Upload完以后将文件移到web目录下以供访问,比如说这样

    webSvr.file('/ppt/upload.image', function(req, res) {
      res.writeHead(200, {"Content-Type": "text/plain"})
    
      // {
      //   "size": 10968,
      //   "path": "C:\\Users\\i304716\\AppData\\Local\\Temp\\3239aff6e5fd36b641008195c41f52db",
      //   "name": "0.jpg",
      //   "type": "image/jpeg",
      //   "mtime": "2014-10-31T05:59:04.322Z"
      // }
      var fileInfo = req.files.file
      if (fileInfo && fileInfo.path) {
        var newFilePath = getNewFilePath(fileInfo)
    
        fs.rename(fileInfo.path, newFilePath, function(e) {
          if (e) {
            console.error(e)
            res.send({ error: e.toString() })
          } else {
            res.send({ file: getNewFileUrl(newFilePath) })
          }
        })
      } else {
        res.send({ error: '上传文件错误!' })
      }
    })
    

    注意两个目录要在一个分区内,否则rename会出问题。

  • #3 newghost 1415873909401

    home是web的根目录, root是脚本执行的根目录

    网页程序最好不要直接访问home以外的目录,否则这样不安全。

    非要这样的话你可以在home目录下创建一个到/data/upload的软链接;或者在Upload完以后将文件移到web目录下以供访问,比如说这样

    webSvr.file('/ppt/upload.image', function(req, res) {
      res.writeHead(200, {"Content-Type": "text/plain"})
    
      // {
      //   "size": 10968,
      //   "path": "C:\\Users\\i304716\\AppData\\Local\\Temp\\3239aff6e5fd36b641008195c41f52db",
      //   "name": "0.jpg",
      //   "type": "image/jpeg",
      //   "mtime": "2014-10-31T05:59:04.322Z"
      // }
      var fileInfo = req.files.file
      if (fileInfo && fileInfo.path) {
        var newFilePath = getNewFilePath(fileInfo)
    
        fs.rename(fileInfo.path, newFilePath, function(e) {
          if (e) {
            console.error(e)
            res.send({ error: e.toString() })
          } else {
            res.send({ file: getNewFileUrl(newFilePath) })
          }
        })
      } else {
        res.send({ error: '上传文件错误!' })
      }
    })
    

    注意两个目录要在一个分区内,否则rename会出问题。

  • #4 zkwap 1415935956431

    @newghost #2

    好的,非常感谢

微信扫码 立即评论




  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA