2016-06-02 16 views
0
$imgData = base64_encode(file_get_contents('F:\images\home\pic.jpg')); 

上記は私のローカルホストパスです。ローカルホストの場合は動作しています。PHPの画像コンテンツをローカルサーバーから取得し、リモートサーバーに保存する

ただし、リモートサーバーでどのように取得できますか?

私はFTPで作業していません。私を案内してください。

私は、画像の内容だけを取得する必要があります。リモートサーバーにファイルをアップロードする必要はありません。

答えて

0

ディレクトリセパレータ\のため、Windowsマシンで開発しているようです。スラッシュ/は、WindowsとLinuxの両方で動作するので、(ルートディレクトリを参照するパスを絶対パスと呼びます)はを使用することをお勧めします。 。可能な限り相対パスを使用することを目指すべきです。

例:

  • F:/images/home/pic.jpgは、絶対パスです。通知 バックスラッシュ\を円スラッシュ/に変更しました。
  • http://www.example.com/images/pic.pngは絶対パスです。
  • ./pic.jpgは(..あなたは画像フォルダがあまりにも配置されている作業ディレクトリを入力、現在のフォルダを終了しました意味)の相対パスであるとpic.jpg
  • ../images/pic.jpg相対パスをイアに相当します。リモート(Linux)のサーバーで

、あなたは

のは、リモートサーバーは、Linux/Apacheサーバであると仮定しましょう相対パスを知っている必要があります。おそらくjavascript/angularの代わりにapacheという質問を付ける必要がありますか?

あなたのイメージへの相対パスを決定し、このような何かにあなたのコードを書き換えるために、上記の例を使用する必要があります。

$imgData = base64_encode(file_get_contents('../images/home/pic.jpg'));

あなたはまた、絶対パス(http://www.example.com/images/pic.png)を使用することができますが、それはないです常に可能または推奨されます。

画像への相対パスを見つけるにはどうすればよいですか? PHP、SSH、またはFTPを使用して、これを行うには複数の方法があります。 あなたのFTPソフトウェアはあなたがそれに移動した場合にあなたの画像へのパスを表示しますが、それをあなたの作業ディレクトリのパスに適合させる必要があります。、あなたはFilezillaの中で見/home/bg29ll/public_html/food2/imagesで、

この場合、

enter image description here

food2は、作業ディレクトリなので、あなただけ使用する必要があります:この画像はFilezillaの、オープンソースのFTPクライアントからです

$imgData = base64_encode(file_get_contents('images/pic.jpg'));

また、あなたのPHPコードでは、この行を含めて、サーバー上で実行することがあります

print_r(dirname(__FILE__));

これにより、絶対パスが何であるかを知ることができます。

EDIT:イメージをデータベースに保存して、データベースに保存することをお勧めしますが、blob列タイプ(バリエーションの1つ、 TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB)。 Mediumblobは、最大16 MBのファイルサイズを許可します。

CREATE TABLE images (
    id INT   AUTO_INCREMENT PRIMARY KEY, 
    mime VARCHAR  (255) NOT NULL, 
    data MEDIUMBLOB   NOT NULL 
); 

あなたはその後、(PDOを使用して)DBに画像を挿入するには、このようなものを使用します。私は:)を助けることができた嬉しい

$blob = fopen($filePath, 'rb'); 

    $sql = "INSERT INTO files(mime,data) VALUES(:mime,:data)"; 
    $stmt = $this->pdo->prepare($sql); 

    $stmt->bindParam(':mime', $mime); 
    $stmt->bindParam(':data', $blob, PDO::PARAM_LOB); 

    $stmt->execute(); 
+0

ITが働いている... – athi

+0

@athi、あなたは私の答えをupvoteし、受け入れられたとしてそれをマークできますか? – bg17aw

+0

イメージが実際にリモートサーバーに存在する場合は、動作しています。 Bt私のアイデアは、ローカルサーバーからリモートサーバーにイメージをアップロードするようなものです。私のイメージのbase64encodeデータを取得し、データベースに保存します。(イメージをサーバーにアップロードする代わりに..) – athi

関連する問題