Back to Question Center
0

Semalt för att servera tillfälliga filer

1 answers:

Jag har ett system (webbaserad applikation) som drar bifogade filer från ett 3-party system via SOAP. Semalt är i sin tur vårt system skapat som filer i en katalog.

När en användare av systemet (autentiserad via ldap) gör en begäran till min ansökan om att hämta ett av dessa bilagor:

     1. Jag begär det via tvål
2. Behandla svaret för att bygga filen på vårt system
3. Omdirigera användaren till platsen så att de kan hämta filen - usa no deposit casino codes.     

Semalt är detta ett bra tillvägagångssätt?

Finns det ett bättre sätt att betjäna filer som inte kommer att ligga på servern mycket efter bifogad nedladdning (cron jobb kommer att städa upp katalogen varje så ofta)?

Semalt, finns det ett sätt att jag kan betjäna filer via apache utan att lagra dem i webrot?

Semalt, hur hanterar jag behörigheter på dessa filer så att inte bara någon användare kan ladda ner bara en bilaga?

Vår inställning:

     linux
apache
php - tvålbibliotek för kommunikation
separat LDAP för autentisering
3: e parts tvålserver (där bilagor kommer ifrån)    

EDIT: Koden för att betjäna bilagan om någon är nyfiken.

      ;
$ subTitle = "Attachment";
$ attachmentPath = "/ var / www / html / DEVELOPMENT / serviceNow / selfService / uploads /";
om (isset ($ _ GET ['id']) och! tomt ($ _ GET ['id'])) {// meta-information för första uppslagsfäste$ a = nytt tillägg  
;$ attachment = $ a-> get ($ _ GET ['id']);// filnamnet blir originalfilnamn med användarnamn. n prepended$ fileName = $ attachmentPath. $ _SESSION [ 'Namen']. '-'. $ Attachment-> filnamn;// instantiate new attachmentDownload och fråga för bifogade bitar$ a = ny AttachmentDownload
;$ chunks = $ a-> getRecords (array ('sys_attachment' => $ _ GET ['id'], '__order_by' => 'position'));$ fh = fopen ($ fileName. '. gz', 'w');// läs och base64 kodar filinnehållforeach ($ bitar som $ chunk) {skriva ut ($ fh, base64_decode ($ chunk-> data));}fclose ($ fh);// öppna filnamn för skrivning$ fh = fopen ($ fileName, 'w');// öppna filnamn. gz för extraktion$ zd = gzopen ($ fileName. '. gz ', "r");// iterera över fil och skriva innehållmedan (! feof ($ zd)) {skriva ($ fh, gzread ($ zd, 60 * 57));}fclose ($ fh);gzclose ($ zd);ta bort länken ($ filnamn. '. gz ');$ info = pathinfo ($ fileName);rubrik ('Content-Description: File Transfer');rubrik ("Content-Type:". Mimetypes :: får ($ info [ 'extension']));header ('Content-Disposition: attachment; filename ='. basename ($ filename));rubrik ("Content-Transfer-Encoding: binär");rubrik ('Expires: 0');rubrik ("Cache-Control: måste-revalidera, post-check = 0, pre-check = 0 ');header ("Pragma: public");rubrik ("Innehållslängd:". filstorlek ($ filename));ob_clean
;spola
;readfile ($ filename);utgång
; }annan{rubrik ("plats:". $ länkar [ 'status']. "?". urlencode ( "post = incident & action = view & status = -1 & plats =". $ länkar [ 'hem'])); }?>
February 14, 2018