php - 使用 PHP 上传、重命名、替换和存储文件

标签 php mysql file-upload

我正在尝试允许用户将图像作为个人资料图片上传到我的网站。我目前有一个 html 表单链接到我的 PHP 代码。我希望发生以下情况:

  1. 要更改为 UserID.Username.ext 的文件名,其中 userID 和用户名是包含 html 表单的页面上的 Razor 变量

  2. 用于替换目录中任何现有同名文件的文件

  3. 文件格式限制为 .jpg、.jpeg、.png、.gif 且大小为 300000

  4. 根据上面提到的用户ID和用户名存储在sql数据库中的新文件路径

我没有 PHP 经验,但曾尝试研究这些领域。我已经为每个项目找到了很好的资源,但我不知道如何格式化和调整 PHP 以便正确地满足所有条件。

我的基本上传PHP文件如下:

$fn = (isset($_SERVER['HTTP_X_FILENAME']) ? $_SERVER['HTTP_X_FILENAME'] :    false);
if ($fn) {
// AJAX call
file_put_contents(
    'uploads/' . $fn,
    file_get_contents('php://input')
);
echo "$fn uploaded";
exit();
}
else {

// form submit
$files = $_FILES['fileselect'];

foreach ($files['error'] as $id => $err) {
    if ($err == UPLOAD_ERR_OK) {
        $fn = $files['name'][$id];
        move_uploaded_file(
            $files['tmp_name'][$id],
            'uploads/' . $fn
        );
        echo "<p>File $fn uploaded.</p>";}}}

我找到了上述各个区域的以下代码:

1 和 3:Rename uploaded files

$filename = $_FILES["file"]["name"];
    $file_basename = substr($filename, 0, strripos($filename, '.')); // get file extention
    $file_ext = substr($filename, strripos($filename, '.')); // get file name
    $filesize = $_FILES["file"]["size"];
    $allowed_file_types = array('.jpg','.jpeg','.png','.gif');  

    if (in_array($file_ext,$allowed_file_types) && ($filesize < 200000))
    {   
        // Rename file
        $newfilename = "$imagecounter-".$file_basename . $file_ext;
        if (file_exists("uploads/".$date."-".$email."-vid-".$videoID."/" . $newfilename))
  • PHP File upload and overwrite file with same name

    if(file_exists("documenti/$fileName")) 
    unlink("documenti/$fileName");
    
  • How to store file name in database, with other info while uploading image to server using PHP?

    // Connects to your Database
    mysql_connect("yourhost", "username", "password") or die(mysql_error()) ;
    mysql_select_db("dbName") or die(mysql_error()) ;
    
    //Writes the information to the database
    mysql_query("INSERT INTO tableName
    (nameMember,bandMember,photo,aboutMember,otherBands)
    VALUES ('$name', '$bandMember', '$pic', '$about', '$bands')") ;
    
  • 所以,我已经找到了满足我所需标准的所有必要的基线代码。我只是不知道使用正确的 PHP 语法来将它们组合在一起。

    感谢您的帮助和建议!

    最佳答案

    上传文件时,您可以立即更改名称,例如代码中的名称,

    move_uploaded_file(
                $files['tmp_name'][$id],
                'uploads/' . $fn
    );
    

    格式为 move_uploaded_files($oldname, $newname),因此您可以将其命名为任何名称并附加文件扩展名。

    我真的建议使用诸如 codeigniter 或 laravel 之类的框架,而不是经典的 php。为您提供了很多工具,将使您的生活变得更加轻松。我建议从 codeigniter 开始,因为它更容易。

    关于php - 使用 PHP 上传、重命名、替换和存储文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31846896/

    相关文章:

    mysql - 在 SQL 中计算百分比

    php - 无法删除 MySQL 数据库条目

    ajax - 为什么我不能异步上传文件?

    c# - 如何接收发布到 ASP.net core 2.1 Web-API 端点的文件和数据

    php - 如何通过使用 WSGI 执行 Python 脚本来避免 PHP exec()?

    java - 如何检查m3u8直播是否还活着?

    mysqld 服务无法启动

    php - 文件上传权限

    php - 余额进入负值问题需要帮助,如果 pos

    php - 将日期保存到mysql数据库的最佳方法