以下のコードのようなものを使用して、後でphpの電子メールメッセージクラスの出力として使用するファイルのパスを取得しています。
//To this folder I'm uploading in another module
$folder='uploads/';
//get the server address.. it's a vpn accessible ip in our case
$dev_baseurl= 'http://192.168.xxx.xyz';
//この場合に機能した関数*(さらに良い方法がある場合は、コメントを追加してください)
function check_address($current_dir,$https_check)
{
//$https_check, user defined var for
$conflen=strlen($current_dir);
//im using this and don't ask me why :P
$conflen1=0;
$B=substr(__FILE__,0,strrpos(__FILE__,'/'));
$A=substr($_SERVER['DOCUMENT_ROOT'], strrpos($_SERVER['DOCUMENT_ROOT'], $_SERVER['PHP_SELF']));
$C=substr($B,strlen($A));
$posconf=strlen($C)-$conflen1-1;
$D=substr($C,1,$posconf);
if (isset($_SERVER['HTTPS'])) $https_check=1;
switch($https_check)
{
case 0:
$host='http://'.$_SERVER['SERVER_NAME'].'/' .$D.'';
break;
case 1:
$host='https://'.$_SERVER['SERVER_NAME'].'/'.$D.'';
break;
}
//output the address
return $host;
}
リモートでホストされているファイルへのパスを取得しようとしています
$dev2_url=check_address('/',1);
$dev2_url="{$dev2_url}";
/* That should be the output we are looking for
$dev_url="{$dev_baseurl}".str_replace($_SERVER['DOCUMENT_ROOT'], '', dirname($_SERVER['SCRIPT_FILENAME']))."/{$folder}";
*/
...私のphpの他のロジック
//$body is a message string that we are sending with a class call as a parameter later
foreach( $_POST['attachments'] as $a => $avalue)
{
if (is_file($avalue))
{
$mime_type[$a] = substr(strrchr($avalue, '.'), 1);
$handle=fopen($avalue, 'rb');
$bs_name=basename($avalue);
$filesize=filesize($avalue);
$f_contents=fread($handle, $filesize);
fclose($handle);
// get_mime_type2はファイルからファイルタイプをチェックしますが、この例には関係ありませんが、出力についてはチェックしますif(isset($ mime_type [$ a]))$ mime_type [$ a] = get_mime_type2($ mime_type [$ a ]);
$body.= '<li><ul><li>Filename: ' . $bs_name .$eol;
$body.= '<li>FileType: '.$mime_type[$a].$eol;
//In this line I use the calculated path to pass it as an output to an HTML based version of an email
$body.= "<li>Path: <a href=\"{$dev2_url}/{$avalue}\" title=\"Open w/ browser {FileName: $bs_name} | Size: {$filesize}\" target=\"_parent\">" .$avalue . "</a><li>Approx.File-Size:{$filesize} bytes</ul>";
}
}
$body.='</ul>';
したがって、この行に注意してください:..。
$body.= "<li>Path: <a href=\"{$dev2_url}/{$avalue}\" title=\"Open w/ browser {FileName: $bs_name} | Size: {$filesize}\" target=\"_parent\">" .$avalue . "</a><li>Approx.File-Size:{$filesize} bytes</ul>";
.. $ dev2_urlはファイルへのパスを見つけるために使用されており、ファイル名を追加します。これで処理されます。運用に必要なことを達成するためのより洗練された方法があるはずですが、それを使用できる実際のシナリオがなければ、自分の実装を共有することしかできません。
それは私に使用するのに便利な出力を与えます..IE:
//http://192.168.xx.xyZ is actually a real IP address
http://192.168.xx.xyZ/ProjectX/protos/jquery-menu2/includes/uploads/t_1.txt
電子メールメッセージに添付されている各ファイルの出力用