Back to Question Center
0

提供临时文件的Semalt

1 answers:

我有一个系统(基于网络的应用程序),它通过SOAP从第三方系统提取文件附件. Semalt反过来将我们的系统创建为目录中的文件.

当系统的用户(通过ldap认证)向我的应用程序请求检索其中一个附件时:

1. 我通过肥皂请求它
2. 处理响应以在我们的系统上构建文件
3. 将用户重定向到该位置,以便他们可以下载该文件. </code></pre><p>Semalt关闭,这是一个好方法吗? </p><p>是否有更好的方式来提供附件下载后不会驻留在服务器上的文件(cron作业将经常清理目录)? </p><p>Semalt,有没有一种方法可以通过apache提供文件,而无需将其存储在Web根目录中? </p><p>Semalt,我如何强制执行这些文件的权限,这样不仅仅是任何用户只能下载任何附件? </p><p>我们的设置:</p><pre><code>linux
阿帕奇
PHP的 - 肥皂库进行通信
单独的LDAP进行身份验证
第三方肥皂服务器(附件来自哪里)</code></pre><p>编辑:代码服务的附件,以防万一谁好奇. </p><pre><code><?php函数ini_set( '的display_errors',1);
使用error_reporting(E_ALL | E_STRICT);//需要全局定义
require_once(“包括/全局. PHP的“);
//在继续之前验证用户
isValidUser<div class="post-text" itemprop="text">;
$ subTitle =“附件”;
$ attachmentPath =“/ var / www / html / DEVELOPMENT / serviceNow / selfService / uploads /”;
if(isset($ _ GET ['id'])and!empty($ _ GET ['id'])){//首先查找附件元信息$ a = new Attachment<div class="post-text" itemprop="text">;$ attachment = $ a-> get($ _ GET ['id']);//文件名将是用户名的原始文件名. 前置$ fileName = $ attachmentPath. $ _SESSION [ 'nameN']. ' - '. $ attachment-> FILE_NAME;//实例化新的附件下载并查询附件块$ a = new AttachmentDownload<div class="post-text" itemprop="text">;$ chunks = $ a-> getRecords(array('sys_attachment'=> $ _ GET ['id'],'__order_by'=>'position'));$ fh = fopen($ fileName. “. GZ”, 'W');//读取和base64编码文件内容foreach($ chunk作为$ chunk){fwrite($ fh,base64_decode($ chunk-> data));}FCLOSE($ FH);//打开文件名$ fh = fopen($ fileName,'w');//打开文件名. gz提取$ zd = gzopen($ fileName. “. gz',“r”);//遍历文件并写入内容while(!feof($ zd)){fwrite($ fh,gzread($ zd,60 * 57));}FCLOSE($ FH);gzclose($ ZD);取消链接($文件名. “. GZ');$ info = pathinfo($ fileName);标题('Content-Description:文件传输');标题('Content-Type:'. MIMETYPES ::得到($信息[ '扩展']));标题('Content-Disposition:attachment; filename ='. 基本名($文件名));('Content-Transfer-Encoding:binary');标题('Expires:0');('Cache-Control:must-revalidate,post-check = 0,pre-check = 0');标题('Pragma:public');标题('Content-Length:'. 文件大小($文件名));ob_clean<div class="post-text" itemprop="text">;冲洗<div class="post-text" itemprop="text">;ReadFile的($文件名);出口<div class="post-text" itemprop="text">;
}其他{标题(“位置:”. $链接[ '状态']. “?”. 进行urlencode( “项=事件和行动=视图&状态= -1&地方=”. $链接[ '家']));
}?>
5 days ago
提供临时文件的Semalt
Reply