Ajax文件上传到Parse Express JS,对于超过2 MB大小的文件,会出现500服务器错误

时间:2015-01-28 09:21:28

标签: parse-platform

当通过ajax将大小超过2MB的文件上传到parse.com时,我收到500内部服务器错误。该应用程序托管在parse.com上,使用Cloud code和Express JS编写。过去的文件(图像+视频) 上传没有任何问题,但最近应用程序正在获得大文件500错误。小于1 MB的文件仍然可以成功上传。让我展示代码。

1。 Express JS控制器上传文件(服务器端)

注1:上传文件不会发送到网址 https://api.parse.com/1/files/filename ,而是发送到自定义网址 Express JS, https://example.com/file?name=filename

注2:文件数据发送到自定义Express JS网址和控制器方法"文件",如下所述,利用Cloud Code Buffer Module创建解析文件并发送回复客户端(浏览器)。

exports.file = function(req, res) {

  var buf = new Buffer(req.body, 'base64');
  var fileType = req.get("Content-Type");
  var fileName = decodeURIComponent(common.trim(req.query.name));

  var file = new Parse.File(fileName, {base64: buf.toString('base64')}, fileType);

  file.save().then(function() {

   res.json({url: file.url(), name: file.name()});

  }, function(error) {

    var message = "";
    if(req.app.settings._gs.debug === true) {
        message = error.code + ' - ' + error.message;
     }
      else {
        message = 'Failed uploading file.';
      }
    res.json(message);
  });

}; 

2。 Jquery ajax方法(客户端)

//file change handler

$('.upload').on('change', function(e) {
  var files = e.target.files || e.dataTransfer.files;
  uploadVideo(files[0]);
});

//Video upload handler
var uploadVideo = function(file) {

  $.ajax({
    async: false,
    cache: false,
    type: "POST",
    dataType: 'json',
    url: "https://example.com/file?name=fileNameWithExtension",
    data: file, //file binary data
    processData: false,
    contentType: false,
    beforeSend: function(jqXHR, settings) {
      //set content type
      jqXHR.setRequestHeader('Content-Type', file.type);
    },
    success: function(data, textStatus, jqXHR) {
      //success callback
    },
    error: function(jqXHR, textStatus, exception) {
      //error callback
    }
  });

}

代码工作正常,文件小于1 MB但大于1MB大小会导致500内部服务器错误。

我曾尝试调试问题,我发现了一个有趣的事情,即控件永远不会达到控制器方法,控制器不执行" exports.file = function(req,res){....}"但在某些时候打破并发送500错误。 parse.com日志中没有条目输入错误。我无法找到导致500代码的真正问题。好吗?

1 个答案:

答案 0 :(得分:1)

发现问题所在。 Parse.com不允许超过1MB的帖子数据。