PHP文件上传 [英] PHP File Upload

查看:107
本文介绍了PHP文件上传的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果我想在将文件名更改为永久位置的服务器之前更改我的文件名,而不是它的临时位置,我该如何执行此操作。

代码如下:

 < form action = upload_file.phpmethod =post
enctype =multipart / form-data>
< label for =file>档案名称:< / label>
< input type =filename =fileid =file/>
< br />
< input type =submitname =submitvalue =Submit/>
< / form> ((($ _FILES [file] [type] ==image / gif)


<?php
($ _FILES [file] [type] ==image / jpeg)
||($ _FILES [file] [type] ==image / pjpeg))
&&($ _FILES [file] [size]< 20000))
{
if($ _FILES [file] [error]> 0)
{
echo返回代码:。 $ _FILES [file] [error]。 < br />;
}
else
{
echoUpload:。 $ _FILES [file] [name]。 < br />;
回显类型:。 $ _FILES [file] [type]。 < br />;
回声大小:。 ($ _FILES [file] [size] / 1024)。 Kb< br />;
回显Temp file:。 $ _FILES [file] [tmp_name]。 < br />;

if(file_exists(upload /。$ _FILES [file] [name]))
{
echo $ _FILES [file] [名称] 。 已经存在。 ;
}
else
{
move_uploaded_file($ _ FILES [file] [tmp_name],
upload /。$ _FILES [file] [名称]);
回声存储于:。 上传/。 $ _FILES [ 文件] [ 名称];
}
}
}
else
{
echo文件无效;
}
?>


解决方案

我不确定我是否理解您的意思。如果您只是想在将文件存储到upload目录时重命名文件,请在使用 move_uploaded_file()时执行此操作:

  $ destination =upload /。 $ new_filename; 
if(file_exists($ destination)){
echo'File',$ destination,'already exists!';
} else {
move_uploaded_file($ temp_filename,$ destination);
}

您也可以让用户定义 $ new_filename ,方法是在HTML表单中提供一个额外的重命名文本字段。




编辑:代码可以是这样的:



表单:

 < form action =upload_file.phpmethod =post
enctype =multipart / form-data>
< label for =file>档案名称:< / label>
< input type =filename =fileid =file/>
< br />

<! - NEW TEXTBOX - >
< label for =newname>重命名为(可选):< / label>
< input type =textname =newnameid =newname/>
< br />

< input type =submitname =submitvalue =Submit/>
< / form>

PHP:

  $ upload_dir = realpath('upload')。 DIRECTORY_SEPARATOR; 
$ file_info = $ _FILES ['file'];

//检查用户是否要求重命名上传文件
if(!empty($ _ POST ['newname'])){
$ new_filename = $ _POST ['新名字'];
} else {
$ new_filename = $ file_info ['name'];
}

//确保文件名是有效的。
if(strpos($ new_filename,'/')!== false || strpos($ new_filename,'\\\')!== false){
// We * have * to确保用户不能将文件保存在$ upload_dir的
之外,所以我们不允许使用斜杠。
//注意:您应该在这里进行更严格的检查!
die(无效的文件名);
}

$ destination = $ upload_dir。 $ new_filename;
// ... if(file_exists(... move_uploaded_file(...


If I want to change my filename before it goes to the server for its permanent location, not its temporary Location how could I do this.

The code is as followed:

<form action="upload_file.php" method="post"
enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<br />
<input type="submit" name="submit" value="Submit" />
</form>


<?php
if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/pjpeg"))
&& ($_FILES["file"]["size"] < 20000))
  {
  if ($_FILES["file"]["error"] > 0)
    {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
    }
  else
    {
    echo "Upload: " . $_FILES["file"]["name"] . "<br />";
    echo "Type: " . $_FILES["file"]["type"] . "<br />";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " Kb<br />";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />";

    if (file_exists("upload/" . $_FILES["file"]["name"]))
      {
      echo $_FILES["file"]["name"] . " already exists. ";
      }
    else
      {
      move_uploaded_file($_FILES["file"]["tmp_name"],
      "upload/" . $_FILES["file"]["name"]);
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
      }
    }
  }
else
  {
  echo "Invalid file";
  }
?>

解决方案

I'm not sure if I understand what you mean. If you just want to rename the file when storing it in the "upload" directory, do so when using move_uploaded_file():

$destination = "upload/" . $new_filename;
if (file_exists($destination)) {
    echo 'File ', $destination, ' already exists!';
} else {
    move_uploaded_file($temp_filename, $destination);
}

You could also let the user define $new_filename by providing an additional "rename" text field in your HTML form.


EDIT: Code could be something like that:

Form:

<form action="upload_file.php" method="post"
    enctype="multipart/form-data">
<label for="file">Filename:</label>
<input type="file" name="file" id="file" /> 
<br />

<!-- NEW TEXTBOX -->
<label for="newname">Rename to (optional):</label>
<input type="text" name="newname" id="newname" /> 
<br />

<input type="submit" name="submit" value="Submit" />
</form>

PHP:

$upload_dir = realpath('upload') . DIRECTORY_SEPARATOR;
$file_info = $_FILES['file'];

// Check if the user requested to rename the uploaded file
if (!empty($_POST['newname'])) {
    $new_filename = $_POST['newname'];
} else {
    $new_filename = $file_info['name'];
}

// Make sure that the file name is valid.
if (strpos($new_filename, '/') !== false || strpos($new_filename, '\\') !== false) {
    // We *have* to make sure that the user cannot save the file outside
    // of $upload_dir, so we don't allow slashes.
    // ATTENTION: You should do more serious checks here!
    die("Invalid filename");
}

$destination = $upload_dir . $new_filename;
// ... if (file_exists(... move_uploaded_file(...

这篇关于PHP文件上传的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆