2011-04-21 168 views
2

我在$ _FILES的处理页面上找到索引找不到错误。据我所知,我的代码在技术上是正确的(至少其他两位查看它的人也无法找到任何错误)。PHP文件上传

因此,首先,被称为与文件上传显示表单功能:

function portfolioEditor($p) { 
    echo "<form method=\"post\" action=\"" . siteurl . "/manage/update.php\">"; 
    echo '<input type="text" name="name" id="name" class="grid4 first" value="' . $p['name'] . '" />'; 
    echo '<input type="text" name="posttype" id="posttype" class="grid4" value="' . $p['posttype'] . '" />'; 
    echo "\n<br />\n"; 
    echo '<textarea name="content" id="content" class="grid8 first">' . $p['content'] . '</textarea>'; 
    echo "\n<br />\n"; 
    echo '<input type="hidden" name="MAX_FILE_SIZE" value="30000" />'; 
    echo '<input name="file" value="' . $p['image'] . '" id="file" type="file" />'; 
    echo '<input type="submit" value="Submit" name="submit" id="submit" />'; 
    echo '<input type="hidden" value="true" id="fileup" name="fileup" />'; 
    echo '</form>'; 
} 

(把它作为一个给定的,与表单的页面调用portfolioEditor($ P)与$细节p满的,或为新项目的每一个资源我的空格。)

这是插入更新页面(不含数据库还)

$p = $_POST; 

$p['url'] = str_replace(" ", "-", $p['name']); 

foreach ($p as $k => $v) { 
    $p[$k] = addslashes($v); 
    //echo $v; 
} 

// FILE UPLOAD IF NEEDED 
if(isset($p['fileup']) && $p['fileup'] == "true") { 
    $loc = sitepath . "/files"; 
    $loc = $loc . basename($_FILES['file']['name']); 
    move_uploaded_file($_FILES['file']['tmp_name'], $loc); 
} 

我不知道为什么这是不工作, v在编写自己的上传脚本时看到使用几乎完全相同的代码。

+1

它看起来像你试图设置'文件'类型输入的'值'。由于安全问题,浏览器不应该允许这样做。 – Entity 2011-04-21 13:12:20

回答

5

你需要把它添加到您的窗体:

enctype='multipart/form-data' 

所以,你的表单标签变为:

echo "<form method=\"post\" enctype='multipart/form-data' action=\"" . siteurl . "/manage/update.php\">"; 
3

添加为form标签属性encytype="multipart/form-data"

echo "<form method=\"post\" action=\"" . siteurl . "/manage/update.php\" encytype=\"multipart/form-data\">"; 
+0

您复制了我的答案?真?你原来的帖子是'添加为表单标签属性encytype =“multipart/form-data”'...就像一个供参考,最好是复制投票比复制答案。 – 2011-04-21 13:47:19

+0

对不起,但是cdburgess先到那里。 – dkuntz2 2011-04-21 15:22:12

+0

@Dkun:没关系。我不介意这些事情。谢谢。 – 2011-04-21 16:02:30

1

当你提交一个文件,表格应该有enctype="multipart/form-data"定义为su ch

echo "<form 
method=\"post\" 
enctype=\"multipart/form-data\" 
action=\"" . siteurl . "/manage/update.php\">"; 
+1

您的enctype会导致异常。 “需要使用\转义。 – 2011-04-21 13:48:38