如何上传文件-sails.js

Dan*_*edu 5 javascript node.js npm sails.js

我可以下载图片和pdf,但我不能下载文档文件(.doc .pptx .odt ...)

当下载文档(.doc .pptx .odt ...)作为 .ZIP 仅 XML 文件下载时。我可以做什么?

我正在使用:填写上传文件文档

upload: function (req, res) {
  req
    .file('avatar')
    .upload({
      maxBytes: 10000000
    }, function whenDone(err, uploadedFiles) {
      if (err) {
        return res.negotiate(err);
      }

      // Generate a unique URL where the avatar can be downloaded.
      avatarUrl = require('util').format('%s/user/avatar/%s', sails.getBaseUrl(), req.session.User.id_user),
      // Grab the first file and use it's `fd` (file descriptor)
      avatarFd = uploadedFiles[0].fd

      var SkipperDisk = require('skipper-disk');
      var fileAdapter = SkipperDisk(/* optional opts */);

      // Stream the file down
      fileAdapter.read(avatarFd).on('error', function (err){
        return res.serverError(err);
      }).pipe(res);

  });
},
Run Code Online (Sandbox Code Playgroud)

Chr*_*SFT 2

因此,您使用的库是 Sails.js 生态系统的一部分,称为Skipper。它有一些可能对您有帮助的文档。

它会在上传时将您的文件保存到随机 GUID,直到您选择对其执行某些操作。我的猜测是,当它这样做时,它并没有携带“.docx”标签,而 .docx 文件实际上只是 zip。(也许这是一个你可以提交的错误?)

我的建议是使用 saveAs 选项。您可以指定一个字符串来用作保存位置。IE:

req.file('file_upload').upload({saveAs: Guid.raw()+'.docx'}, handleUploadCompletion);

还可以传递函数,以便根据流处理多文件上传。