我如何检索我上传的文件的路径?

时间:2009-05-11 10:57:12

标签: php mysql

我正在开发一个cms。

表客户端包含许多字段,其中一个是图像标题。

当用户上传文件(图像)时,文件存储在公共文件夹中。

图像标题字段检索文件的最终名称并将其存储在表格中。

问题是当用户想要更新信息时。如果用户不想更改图像,当他点击“更新”时,图像标题字段为空,因此图像的路径变为空,现在他只显示(无图像)。

继承人我一直在努力做的事情:

HTML表单:

    <p>
        <label for="image_caption">Image Caption:</label>
    <input name="image_caption" id="image_caption" type="text" class="formbox" size="60"  disabled="disabled" value="<?php echo htmlentities($row['image_caption']); ?>" /> 
    </p>                                                                                     
    <p>
        <label for="image">Insert image:</label>
        <input type="hidden" name="MAX_FILE_SIZE" value="<?php echo MAX_FILE_SIZE; ?>" />
        <input type="file" name="image" id="foto" value="<?php echo htmlentities($row['image_caption']); ?>"/> 
    </p>
    <p>
        <?php 
        if($row['image_caption']!= ""){
        ?>
            <img src="../images/clientes/<?php echo $row['image_caption'];?>" width="194" height="145" title="Imagem cliente" class="floatright"/>
      <?php
        }else{
        ?>
            <img src="../images/sem_imagem.gif" width="194" height="145" title="Imagem não disponível" class="floatright"/><br />                                               
        <?php
        }
        ?>
  </p>        
    <p>
        <input type="submit" name="update" value="Update" />
        <input name="cliente_id" type="hidden" value="<?php echo $row['codigo']; ?>" />
    </p>

现在上传PHP代码(香港专业教育学院刚刚插入了我想要展示的代码):

    // This checks if the file input is empty, and if it is, insert the value from the table that was previously inserted

    if(empty($_FILES['image']['name'])){
$image_caption = $row['image_caption'];

}else{

$image = str_replace(' ', '_', $_FILES['image']['name']);   
// move the file to the upload folder and rename it
move_uploaded_file($_FILES['image']['tmp_name'],UPLOAD_DIR.$foto);  
$image_caption = $image;
}   

3 个答案:

答案 0 :(得分:1)

我仍然不确定我理解,但你不能只将原始文件的名称作为隐藏字段传递吗?然后如果没有上传,请使用它。

编辑:刚刚看过您的评论,您已经拥有原始文件的名称,因此将PHP更改为:

if(empty($_FILES['image']['name'])){
    $image_caption = $_POST['image_caption'];
}else{
    ....(etc)

应该有效,不是吗?

当然,如果你要做那样的话,你应该对发布的变量进行某种消毒,以确保没有任何肮脏......

答案 1 :(得分:0)

表单提交后,您是否从数据库中获取信息?我的意思是,$ row ['nome_foto']实际上是否包含前一个路径?

编辑:无论哪种方式,如果没有提供新路径,最好不要更新数据库中的路径字段。

此外,您需要在上传中添加某种形式的支票以确保它是一张图片 - 如果我愿意,我现在可以将PHP脚本或病毒上传到服务器。

答案 2 :(得分:0)

我不确定我是否理解正确,但如果您使用数据库中的数据填充更新表单,我会给它一个镜头 - 然后图像标题字段将不会为空,即使该人只更改了他的名字和留下一切。