首页 > 解决方案 > 角度文件上传 SyntaxError:位置 1 的 JSON 中的意外数字

问题描述

我正在尝试使用节点服务器在角度项目中进行文件上传

角度:

public uploadFile(file: File): Observable<any> {
    const formData: FormData = new FormData();
    formData.append('file', file, file.name);
    return this.http.post<any>(environment.api_url + '/upload', formData);
  }

节点

function upload(req, res){
  var dir = __dirname +'/../uploaded';
  var fileDir;
  if (!fs.existsSync(dir)){
    fs.mkdirSync(dir);
  }
  var form = new IncomingForm({ uploadDir: __dirname + '/../uploaded' });
  let readStream;
  form.on('file', (field, file) => {
    fs.renameSync(file.path, file.path + '_' + file.name);
    fileDir = file.path + '_' + file.name;
    fileDir = fileDir.replace(__dirname, '');
  });
  form.on('end', () => {
    dirname = path.join(__dirname, '/../uploaded');
    fileDir = fileDir.replace(dirname + '\\', '');
    fileDir = fileDir.replace('/app/src/uploaded/', '');
    return res.status(200).json({ 'file': fileDir }).end();
  });
  form.parse(req);
}

当我提交表单时,我收到错误:

events.js:167
      throw er; // Unhandled 'error' event
      ^

SyntaxError: Unexpected number in JSON at position 1
    at JSON.parse (<anonymous>)

我找不到问题的根源我在客户端和服务器端尝试了不同的方法。JSON数据有问题,但我无法通过此文件上传来修改它,

希望有人有解决方案

标签: javascriptnode.jsangular

解决方案


你能通过放置这行代码来试试上面的代码吗

form.parse(req);

在这条线之后

var form = new IncomingForm({ uploadDir: __dirname + '/../uploaded' });

推荐阅读