2009-09-02 10 views
3

私はApacheとWindowsを使用していますが、私は別のサーバにある部品の画像を表示する必要があるアプリケーションを作成しています。アプリケーションディレクトリ。移動する画像が多すぎますし、他のアプリケーションが同じ画像を使用しています。ウェブアプリケーション外のディレクトリにある画像にアクセスする方法

この問題を解決する最も良い方法は何ですか?

バックエンドはphpとmysqlですが、これは関係ないと思います。

ありがとうございました

+0

を私がすることを、主要なポイントを言及するのを忘れてしまいました私はJavascriptからディレクトリにアクセスする必要があります。 – sdfor

答えて

2

ファイルがwwwルートの外部に格納されている場合。 次に、ファイルにアクセスするための十分な権限が必要です。それは安全ではないですから、生産environementでこのコードを使用していない、

<?php 

$imageFileName = $_GET['image']; 
$path = '/var/data/somewhere/'; 

$fullpath = $path . $imageFileName; 

if (!is_file($fullpath)) 
{ 
    die('Image doesn't exist); 
} else { 
    $size = filesize($fullpath); 
    $content = file_get_contents($fullpath); 
    header("Content-type: image/jpeg"); 
    echo $content; 
} 

まあ:

次に、あなたのような何かを行うことができます。

getimagesize()を使用して画像であることを確認できます。 ブラックリストPHPS拡張、等... 、作業ディレクトリを指定して、後方../../

file_get_contents()

EDIT使用することはできませんする:あなたのコメントについて

をシンボリックリンクについては、apache.confファイルにアクセスできる場合は、Webルート以外の別のディレクトリを指すaliasを指定することができます。

0

シンボリックリンクを見ましたか?

ln -s LocalName FullPathOfRealFileLocation 
+0

はい、私はそれを試みました。これはunix/linuxの亜種のいずれにおいてもうまくいくでしょう。ウィンドウショートカットは、パス名の途中では使用できません。 images/shortcutToAnotherFolder/image.jpgはウィンドウでは機能しません。 – sdfor

0

イメージはサーバー上にあるので、コードで直接参照してください。

<img src="http://myotherserver.com/images/picture.jpg" 
+0

考えてくれてありがとう。他のサーバーは、インターネット経由でアクセスできません。アカウンティングサーバー上にあります。 – sdfor

0

あなたがApacheを使用していると私が発見した最高の答えです。私はApache Alias機能を使用して内部ディレクトリにアクセスできるようにしています。

上記のBGYからの回答で示唆されています。

私はのhttp.confに以下を追加しました:私のコードで

Alias /fabimages p:/IMDATA/IMAGES 
<Directory p:/IMDATA/IMAGES> 
    Order allow,deny 
    Allow from all 
</Directory> 

を、私は私が必要とする画像に.SRC属性セット:

var fabimage = document.getElementById("fabImageTag"); 
fabimage.src="/fabimages/"+imageName; // and it picks up the image from p:/IMDATA/IMAGES 
関連する問題