2013-11-05 9 views
5

So haben wir einen Datei-Uploader in unserer Anwendung, die auf der lokalen Umgebung arbeitet, gebaut. Wir haben die Dateien in den öffentlichen/upload hochgeladen werden und wir die Dateien mit lesen:Meteor.js Upload-Ordner auf Produktion

http://localhost:3000/upload/filename.extension 
Jetzt

, wenn wir den Code zur Produktion zu bewegen, verwenden wir einen Scheck:

getUploadPath = function() { 
    var fs = Npm.require('fs'); 
    var path = Npm.require('path'); 
    var devPath = path.join(process.cwd(),"../../../../../public"); 
    var prodPath = path.join(process.cwd(),"../client/app/"); 
    if (fs.existsSync(devPath)) { 
     return path.join(devPath,"upload"); 
    } 
    else { 
     return path.join(prodPath,"upload"); 
    } 
} 

Nun, dies speichert die Datei in {prod_path}/programs/client/app/upload. Ich kann die Datei jedoch nicht in der Anwendung verwenden. Was überrascht, ist, dass alle Dateien, die sich lokal befinden, auch im selben Upload-Ordner vorhanden sind und für die Anwendung zugänglich sind. Was vermisse ich ?

+0

Ich fand heraus, dass die program.json die Zuordnung für den Pfad hat und der URL. Also, die nächste Frage ist, wo ich meine statischen Ressourcen auf dem Server speichern, damit er zugänglich ist? –

Antwort

0

Wenn diese Anwendung auf einem Server mit Nginx oder Apache ausgeführt wird, können Sie den Speicherort festlegen/hochladen, sodass Dateien direkt ohne Meteor bereitgestellt werden.

Auf Nginx verwende ich so etwas wie dieses:

location /upload/ { 
    root /home/app-name/bundle/programs/web.browser/app; 
}