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 回答