0

これで立ち往生し、ajaxからw3schoolsバージョンのアップロードを試しましたが、うまくいきませんでした。

私の_events.phpスクリプトには、ファイル情報を取得するために次のものが含まれています。

<input name="event_image" type="file" />

_eventscreate.phpスクリプトには、ファイルを_gallery /ディレクトリにアップロードする方法がありません。アップロードしたら、データベースに保存するファイルにURLを設定したいと思います(SQLクエリを参照)。

<?php   // Get Event ID
    $location=$_GET['location'];

    // Get values from form
    $event_name=$_POST['event_name'];
    $event_description=$_POST['event_description'];
    $event_date=$_POST['event_date'];
    $event_time=$_POST['event_time'];
    $event_cost=$_POST['event_cost'];
    $event_image=$_POST['event_image'];

    // Connection to MySQL Database.
    include ('_includes/_dbconnection.php');
    include ('_includes/_dbopen.php');

    // Update Event using Event ID.

    $sql="INSERT INTO b_events (ename, edescription, edate, etime, ecost, locationid, eimage)VALUES('$event_name', '$event_description', '$event_date', '$event_time', '$event_cost', '$location', '$event_image')";
    $result=mysql_query($sql);

    if($result){
    header('Location: _events.php');
    }

    else {
    header('Location: _home.php');
    }

?>

助けてください

4

2 に答える 2

1

URL とは、リモート ソースの場所ではなく、ファイルのローカル コピーへのパスを意味すると仮定します。私がそれについて誤解している場合、答えはおそらく「ファイルのアップロードを使用しないでください」です。

PHP スクリプトが実行されると (特に奇妙なことをしていない限り)、ファイルのアップロードが完了し、ファイル情報 (名前、サイズなど) が $_FILE に保存されていることを意味します。そのパスを保存または使用する (または実際に _gallery に移動する) ことができるようになる前に、そのパスを設定する必要があります。アップロードされると、ファイルは $_FILES[fileID]["tmp_name"] のパスに保存されます。ただし、移動や読み取り操作など、このパスを直接操作することはできません (少なくとも Apache2 ではできませんでした)。

まず、PHP の inbuit メソッドを使用して、選択した場所にそのファイルを書き出す必要があります。例えば:

move_uploaded_file($_FILES[fileID]["tmp_name"], "_gallery/".$_FILES[fileID]["name"]);

その後、ファイルはあなたが望むように扱うことができ、そのアドレス (上記の例では "_gallery/".$_FILES[fileID]["name"]) は単なる別の PHP 文字列です。

URL がそのファイルの外向きのアドレス (ファイルにアクセスするために誰かがブラウザーに入力するアドレス) を意味する場合は、自分で作成する必要があります。ファイルが webroot 内にあるという最も単純なケースでは、これは、作成したばかりのファイルへの相対パスを連結することを意味します。ハードコーディングされたベース URL を使用したくない場合は、$_SERVERの値が役立つ場合があります。

于 2012-04-13T11:09:19.877 に答える
0

$event_image = $_POST['event_image']; は使用できません。アップロードされたファイルを取得します。

アップロードされたファイルにアクセスするには、$_FILES[$name] を使用する必要があります。ここで、$name は次のファイルの名前です。

<input type="file" name="something" />

また、フォームに method="post" と enctype="multipart/form-data" があることを確認してください。

$_FILES[$name] 自体はキーを持つ配列 (連想配列) になります。

  • 名前
  • タイプ
  • サイズ
  • tmp_name
  • エラー

ファイルが正常にアップロードされたら ($_FILES[$name]['error'] == UPLOAD_ERR_OK でテスト)、希望の場所にファイルを移動する必要があります。

ファイルが (move_uploaded_file() を使用して) 移動された後、その名前を取得し、値を $event_image に割り当てることができます。次に、データベースに保存します。

詳細については、こちらをお読みください

于 2012-04-18T13:48:41.587 に答える