Back to Question Center
0

Geçici dosyaları sunmak için Semalt

1 answers:

SOAP yoluyla bir 3. parti sisteminden dosya eklerini çeken bir sistemi (web tabanlı bir uygulama) sahibim. Semalt, sırasıyla bir dizindeki dosyalar olarak oluşturulan sistemimizde.

Sistem kullanıcısı (ldap ile kimlik doğrulaması yapıldığında) bu eklerden birini almak için başvurumdan bir istekte bulunur:

     1 - cctv security systems. Sabun vasıtasıyla isteyim
2. Dosyayı sistemimizde oluşturmak için yanıt işlemini yapın
3. Dosyayı indirebilmek için kullanıcıyı konuma yönlendirin.     

Semalt off, bu iyi bir yaklaşım mı?

Ek indirmeden sonra sunucuda bulunmayacak dosyaları sunmak için daha iyi bir yol var mı (cron işi dizini her sık ​​sık temizleyecektir)?

Semalt, dosyaları web kök dizininde depolamadan apache aracılığıyla sunabilmemin bir yolu var mı?

Semalt, bu dosyalarla ilgili izinleri nasıl uygulayabilirim, böylece sadece herhangi bir kullanıcı herhangi bir eklentiyi indiremez mi?

Kurulumumuz:

     linux
apache
php - iletişim için sabun kütüphaneleri
kimlik doğrulama için ayrı LDAP
3. taraf sabun sunucusu (eklerin nereden geldiği)    

DÜZENLEME: Herkes merak halinde eki hizmet kodu.

      ;
$ subTitle = "Ek";
$ attachmentPath = "/ var / www / html / GELİŞTİRME / serviceNow / selfService / uploads /";
If (isset ($ _ GET ['id']) ve! empty ($ _ GET ['id'])) {// ilk ek eki meta bilgisi$ a = yeni Ek  
;$ attachment = $ a-> almak ($ ​​_ GET ['id']);// dosya adı kullanıcı adı olan orijinal dosya adı olacaktır. eklenen n$ dosyaAdı = $ attachmentPath. $ _ SESSION [ 'Namen']. '-'. $ Attachment-> dosya_adı;// yeni eklemenin örneklenmesi Ek parçalarının indirilmesi ve sorgulanması$ a = yeni AttachmentDownload
;$ chunks = $ a-> getRecords (dizi ('sys_attachment' => $ _ GET ['id'], '__order_by' => 'konum'));$ fh = fopen ($ dosyaAdı. '. gz', '') a;// dosya içeriğini okur ve base64 kodlarforeach ($ parçacıklar $ yığın olarak) {fwrite ($ fh, taban64_decode ($ yığın-> veri));}fclose ($ fh);// yazma için dosya adını açın$ fh = fopen ($ dosyaAdı, 'w');// dosya adını açın. ekstraksiyon için gz$ zd = gzopen ($ dosyaAdı. '. gz ', "r");// dosyayı yineleme ve içerik yazmawhile (! feof ($ zd)) {fwrite ($ fh, gzread ($ zd, 60 * 57));}fclose ($ fh);gzclose ($ zd);bağlantısını kaldırmak ($ ​​fileName. '. gz ');$ bilgi = yol bilgisi ($ dosyaAdı);başlık ('İçerik Açıklama: Dosya Aktarımı');üstbilgi ('İçerik Türü:'. Mimetypes :: ($ bilgi [ 'uzantı'])) olsun;header ('Content-Disposition: ek; dosyaadı ='. basename ($ fileName));başlık ('Content-Transfer-Encoding: binary');başlık ('Süreler: 0');başlık ('Cache-Control: must-revalidate, post-check = 0, ön-kontrol = 0');başlık ('Pragma: public');başlık ('Content-Length:'. filesize ($ fileName));ob_clean
;çalkalama
;readfile ($ fileName);çıkış
; }Başka{üstbilgi ("yer:". $ Bağlantılar [ 'statü']. "?". UrlEncode ( "et = olay ve etki = görünüşüdür ve durumu = -1 yer =". $ Bağlantılar [ 'ev'])); }?>
February 14, 2018