node.js - TypeScript projesinde NodeJS dosya yüklemelerinde sorun yaşıyor
Formidable modülünü kullanarak bir dosyayı NodeJS sunucusuna yüklemeye çalışıyorum. Yükleme işleminden sonra dosyanın adını başka bir şeyle değiştirmek istiyorum, bunun için yüklenen dosyanın adını ve yolunu almam gerekiyor. Formidable tarafından sağlanan belgelerde belirtildiği gibi, dosya yolunu almak için Formidable.File sınıfını çağırmanız gerekir; dosyanın yazıldığı yer burasıdır.
İşte dokümantasyon: https://github.com/felixge/node-formidable#formidableincomingform
Projem Typescript ile yazıldı, bu yüzden Formidable için yalnızca çağırmam gereken sabitleri içeren bir Typescript tanımı yazdım. Bu, başka bir dosya olan Upload.ts'te çağrılıyor.
İşte formidable için TypeScript tanımı
declare module "formidable" {
export class IncomingForm{
uploadDir: String;
keepExtensions: Boolean;
type: String;
parse(req, Function) : void;
}
export class File{
name: String;
path: String;
}
}
Yükle.ts
public upload(req, res){
var form = new formidable.IncomingForm();
var file = new formidable.File();
var originalFileName = file.name;
form.uploadDir = this.directory;
form.keepExtensions = true;
form.type = 'multipart';
form.parse(req, function(err, fields, files) {
res.writeHead(200, {'content-type': 'text/plain'});
res.write('received upload:\n\n');
res.end(util.inspect({fields: fields, files: files}));
});
return;
}
"Yükle" düğmesine bastığımda, şu hatayla karşılaşıyorum:
var file = new formidable.File();
TypeError: undefined is not a function
Tanımım belgelerdeki bilgilere göre doğru görünüyor ve bu hatayı anlamıyorum.
Cevap #1
Yeni boş bir File örneği oluşturarak yüklenen bir dosyanın yolunu alamazsınız.
Geri aramanızda parse metoduna verdiğiniz files parametresi, yüklenen dosyaların File nesnelerini içerir.