2009-10-15 13 views
5

私は、ユーザーが自分のWebサイトに画像をアップロードできるPHP Webアプリケーションを持っています。私は単純なHTMLを使ってこれをやっています。<form enctype="multipart/form-data">Web開発:CDN(Cachefly)に直接ファイルをアップロードする方法を教えてください。

しかし、それらの画像を私のWebサーバーにアップロードするのではなく、それらの画像を自分のCDN(Cachefly - 別のサーバー)に直接アップロードします。

これは可能ですか?ユーザーがウェブアプリケーションを使用して別のサーバーに画像を直接アップロードできるようにするにはどうすればよいですか?

それが助け場合は、ここに私のPHPコードです:

$target_path = "/home/www/example.com/uploads/"; 
$target_path = $target_path . basename($_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { 
    // file has been uploaded **LOCALLY** 
    // HOWEVER, instead of it being upload locally, I would like the file 
    // to be directly uploaded to the CDN ('other' server) 
    ... 
} else{ 
    // error: file did not get uploaded correctly 
    .... 
} 

答えて

0

確かに。

コードのどこかに、 "$ target_directory"変数を設定する必要があります。それはそれと呼ばれることはありませんが、あなたの機能がどのように設定されているかを蔑視すると、どこかにある必要があります。ファイルを着陸させるディレクトリの絶対パスを使用するだけです。また、CHMODを777に設定して、ディレクトリに書き込むことができるようにしてください。

コードを投稿すれば、より多くのことができます。

+0

私は元の投稿に自分のコードを含めました – Tim

1

別のサーバーに直接アップロードすることはできませんが、間違っている可能性があります。同様の問題があり、PHPのFTP機能(http://us3.php.net/manual/en/book.ftp.php)を使用しました。私はまだ中規模の人として私のサーバーを使用しました。つまり、ファイルをサーバーにアップロードした後、FTPを使用してターゲットサーバーに転送し、サーバーからファイルを削除しました。

1

ウェブサーバーで受信し、ファイル共有またはFTP経由でCDNに転送することができます。

CDNがウェブに面している場合は、そのファイルをアップロードした後、そのサーバに要求をリダイレクトし、Webサーバのフォームに制御を戻すことができます。しかし、バックエンドでファイル転送を行い、ユーザーをWebサーバーに接続したままにする方がよいでしょう。

+0

それは私の質問のポイントです...私にアップロードするのではなく、FTP経由で自分のCDNに転送します。単にHTMLフォームをアップロードしてCDNに直接アップロードできますか? – Tim

5

私はCDNの場合、まずURサーバー上のファイルを受信し、CDN APIを使って 'バケット'にアップロードする必要があると思います。私はUのサーバー上のディレクトリとしてそれをマップする方法がない限り、あなたはCDNに直接アップロードできると思います。自分で「所有」サーバにファイルを行うことができますアップロード/移動非直接accesableサーバは通常

  • プロバイダのAPIを使用して行われるサービスにまたはあなたのためにファイルをアップロード/移動

  • +0

    私のCDNは自分のサーバー上の自分のファイル共有にFTPでアクセスできます。何か違いはありますか? – Tim

    +0

    実際には...プロセスは次のようになります。 1:urサーバにアップロードされたファイルを取得します。 2:バッチファイルまたは単一ファイルをバックグラウンドでFTP経由でCDNに送信するPHPスクリプトを記述します。 –

    +0

    したがって、短い答えは "いいえ"です - ファイルアップロードのためにHTML FORMアップロードポイントを別のサーバーに直接持ち込むことはできません。あれは正しいですか? – Tim

    2
    • (詳しくは:pear.php.netまたはpecl.php.neトン)PHP + FTP拡張機能を使用することにより
    • 引越し/自分でサーバー「所有」にファイルをアップロードし、通常は1の一時ファイルをアップロードすることによって行われ、クラスタ内の多くの一つでありますその後に.sh、.bash、または他のサーバへのさらなる転送プロセスをアクティブにするものが呼び出されます。
    +0

    Cachefly、 'other'サーバーは、ファイルをアップロードするためのFTPアクセスを提供します。だから、私が正しく理解していることを確認するために...私はまだ私のサーバーにファイルをアップロードし、次にFTPをCacheflyにアップロードします。あなたが言っているのは、エンドユーザーがHTMLフォームを使って直接Cacheflyにアップロードすることができないということです。 – Tim

    +0

    私の理解は正しいですか? – Tim

    +0

    そうですね、私はあなたがサーバー上でのアップロードプロセスを終了することを可能にする解決策を知らなかったのです。 –

    0

    はいAmazon Webサービス、すでにあなたは、ユーザーのブラウザから直接アマゾンS3にアップロードすることができます: ドキュメント:http://doc.s3.amazonaws.com/proposals/post.html

    さらにS3バケットは、アマゾンCDN(またはでき、他のCDN経由で公開することができ

    +3

    それは提案です。 「ドキュメンテーション」ではありません。誰も知っている、アマゾン実際にこれを許可ですか? – Cole

    +0

    それはまた知っていることは素晴らしいことです。 – xiankai

    関連する問題