5

Yüklemeye ve görüntüye erişmeye çalışıyorum. Yükleme iyi gidiyor, görüntüyü varlıklara/görüntülere yüklüyor, ancak görüntüyü tarayıcıdan http://localhost:1337/images/image-name.jpg gibi görüntülemeye çalıştığımda bana 404 veriyor. Ben sadece arka uç amaçları için Sails.js kullanıyorum - API için ve proje - ön uç seçeneği. Ön uçum AngularJS'de. Erişim, Sails.js arka uç projesinde yüklendi

Benim yükleme fonksiyonu: Ben varlıklar/images klasöründe resmi görmek

avatarUpload: function(req, res) { 
    req.file('avatar').upload({ 
     // don't allow the total upload size to exceed ~10MB 
     maxBytes: 10000000, 
     dirname: '../../assets/images' 
    }, function whenDone(err, uploadedFiles) { 
     console.log(uploadedFiles); 
     if (err) { 

      return res.negotiate(err); 
     } 

     // If no files were uploaded, respond with an error. 
     if (uploadedFiles.length === 0) { 

      return res.badRequest('No file was uploaded'); 
     } 

     // Save the "fd" and the url where the avatar for a user can be accessed 
     User 
      .update(req.userId, { 

       // Generate a unique URL where the avatar can be downloaded. 
       avatarUrl: require('util').format('%s/user/avatar/%s', sails.getBaseUrl(), req.userId), 

       // Grab the first file and use it's `fd` (file descriptor) 
       avatarFd: uploadedFiles[0].fd 
      }) 
      .exec(function (err){ 
       if (err) return res.negotiate(err); 
       return res.ok(); 
      }); 
    }); 
} 

- Böyle bir şey - 54cd1fc5-89e8-477d-84e4-dd5fd048abc0.jpg

http://localhost:1337/assets/images/54cd1fc5-89e8-477d-84e4-dd5fd048abc0.jpg-404

verir

http://localhost:1337/images/54cd1fc5-89e8-477d-84e4-dd5fd048abc0.jpg - Bu uygulama erişimler doğrudan erişilen olmayan kaynaklara nedeniyle olur 404

cevap

5

verir assets dizini, ancak proje kökü içindeki .tmp dizini.

Yelkenler kaldırıldığında varlıklar .tmp dizinine kopyalanır, bu nedenle asansörden sonra eklenen hiçbir şey .tmp içinde mevcut değildir.

Genelde yaptığım işlem tamamlandığında, .tmp ve copy dosyalarına assets numaralı dosyaya yükleme yapmaktır. Bu nedenle, yüklemenin herhangi bir nedenle başarısız olması durumunda assets kirlenmez.

Bu işe yararsa bize bildirin. İyi şanslar!

Güncelleştirme Bunun için ilgili bir link bulundu.

+1

Çok teşekkür ederim. Sağladığınız eğiticiyi takip ederek bir yükleme yapmayı ve resme erişmeyi başardım. Bana gerçekten yardımcı oldu. Sadece bir küçük şey not etmek - yüklenen dosya kopyaları varlıktan '.tmp' klasörüne kopyalanırken, klasör yapısının - .tmp/public/images/uploads 'yoksa, önce ya da' fs oluşturmamız gerekiyor. Hata yakalanmadığında uygulamayı bozar. –

+1

Gerçekten de! Ek işlevler için [mkdirp] (https://www.npmjs.com/package/mkdirp) modülünü veya [fs-extra] (https://www.npmjs.com/package/fs-extra) kullanabilirsiniz.) Tek bir komut kullanmıyorsa bir klasör oluşturmak. Ya da sadece bu [mantıksal çözümü] kullanın (http://stackoverflow.com/a/21196961/1100528). – galactocalypse

İlgili konular