0

AJAX を使用していくつかの値を挿入するフォームがあり、画像も追加したいのですが、PHP コードでスーパーグローバル $_FILE['file_name'] を使用するだけでは画像を取得できません。 PHP は AJAX の下にあります。したがって、ファイルのパスを使用して PHP からファイルをロードできるかどうか疑問に思っています。実際には、JS/AJAX を介して単純に渡すことができます。

それとも、JS/AJAX からファイル全体のバイナリ コードを取得し、それを PHP に渡して、最終的に SQL データベースの BLOB に入れる方法ですか?

Ps .: 明らかに ajax を使用する必要があります

4

3 に答える 3

0

現在、AJAXではファイルをアップロードできません。

従来の方法を使用するだけです。

ただし、FirefoxとChromeでは少し可能です。しかし、その方法はIEでは機能せず、かなり複雑です。

編集

Javascriptにこのhttps://developer.mozilla.org/en-US/docs/DOM/FileReaderを使用させ、シリアル化して、AJAXを使用してPOST経由で投稿することを検討できます。少し複雑。FileReaderは、Chromeおよび最新バージョンのFirefoxで動作します。SafariとOperaでも機能すると思います(100%確実ではありません)。おそらくIEではありません。

しかし、現時点では、すべてのブラウザを動作させるのは少し複雑です。

于 2012-10-12T20:05:21.883 に答える
0

AJAX を介したファイルのアップロードに関する専門知識はありません。ただし、ファイルを BLOB として DB に挿入する際にサポートが必要な場合は、サポートを提供できます。

PDOを使用すると、かなり簡単です。LOBに関する詳細専用のページがあります。

$stmt = $db->prepare("INSERT INTO table (image) values (?)");

$fp = fopen($_FILES['file']['tmp_name'], 'rb');

$stmt->bindParam(1, $fp, PDO::PARAM_LOB);

$stmt->execute();
于 2012-10-12T20:26:07.457 に答える
0

ファイルがサーバー上に既に存在する場合は、ファイル パスを AJAX 経由で PHP に渡し、PHP のfile_get_contents関数を使用して読み込むのが最善だと思います。

ファイルがサーバー上に存在しない場合は、おそらくフォームを送信する方がよいでしょう。サーバー上で実行されている PHP は、ファイル パスを取得してクライアントからファイルを取得することはできません。

jQuery を使用できる場合は、HTML フォームを使用して送信イベントをキャプチャし、フォームを変数にシリアル化し、AJAX 経由で渡し、false を返してフォームが送信されないようにすることができます (ページのリロードが発生します)。


編集

考え直しserializeて、ソリューションの唯一の部分ではありません。これは、ファイルの内容ではなく、ファイル入力の値のみを取得します。コンテンツを取得するのは、はるかに面倒です。ただし、W3C は何かに取り組んでいるようです。

おそらく、標準の HTML フォームを使用するのが最善でしょう。

于 2012-10-12T20:03:18.953 に答える