php简单上传图片到服务器 - 后缀不变 - 时间戳作为文件名

本文介绍了一个简单的PHP文件上传示例,通过设置时间戳和文件扩展名来生成唯一文件名,并验证上传文件是否为图片格式,确保文件大小不超过限制且文件类型符合要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上午的时候做了desgin,手有点痒痒,好吧,要不试试白。

先定个小目标,完成到本地服务器的上传,参考了 http://www.w3schools.com/php/php_file_upload.asp, 稍微加了变量,修改了输出,效果如下。

这里写图片描述

代码如下:

<?php
date_default_timezone_set("Asia/Shanghai");
$mytime=date("YmdHis");
$myextension=end(explode(".",$_FILES["fileToUpload"]["name"]));

$target_dir = "uploads/";
//$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$target_file = $target_dir . $mytime . "." . $myextension;

// echo $mytime . "<br>";
// echo $myextension . "<br>";
// echo $target_file . "<br>";

$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }
}
// Check if file already exists
if (file_exists($target_file)) {
    echo "Sorry, file already exists.";
    $uploadOk = 0;
}
// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Sorry, your file is too large.";
    $uploadOk = 0;
}
// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
    $uploadOk = 0;
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
    echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded." . "<br>";
        echo "You can use the following line to your blog markdown editor!" . "<br>";
        echo "![mark](http://soft.ops.ac.cn/php/" . $target_file . ")";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}
?>

<!DOCTYPE html>
<html>
<body>

<form name="uploadform" action="up.php" method="post" enctype="multipart/form-data">
    Select image to upload:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload Image" name="submit">
</form>
</body>
</html>
### 将日期 2025-05-06 转换为时间戳的解决方案 在 Java 中,可以使用 `java.time` 包中的类来实现将日期转换为时间戳的功能。以下是一个完整的解决方案,包括代码示例和详细说明。 #### 使用 `LocalDate` 和 `ZonedDateTime` 进行日期到时间戳的转换 Java 提供了 `LocalDate` 类来表示不带时区的日期。为了将日期转换为时间戳,需要将其转换为 `ZonedDateTime` 或 `Instant`,因为时间戳通常表示自 1970-01-01 00:00:00 UTC 以来的秒数或毫秒数。 以下是将日期 `2025-05-06` 转换为时间戳的代码示例: ```java import java.time.LocalDate; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.Instant; public class DateToTimestampExample { public static void main(String[] args) { // 定义目标日期 LocalDate date = LocalDate.of(2025, 5, 6); // 假设目标时区为系统默认时区 ZoneId zoneId = ZoneId.systemDefault(); ZonedDateTime zonedDateTime = date.atStartOfDay(zoneId); // 获取时间戳(以秒为单位) Instant instant = zonedDateTime.toInstant(); long timestampInSeconds = instant.getEpochSecond(); // 获取时间戳(以毫秒为单位) long timestampInMillis = instant.toEpochMilli(); System.out.println("日期 2025-05-06 的时间戳(秒):" + timestampInSeconds); System.out.println("日期 2025-05-06 的时间戳(毫秒):" + timestampInMillis); } } ``` #### 代码解析 1. 使用 `LocalDate.of()` 方法创建一个表示 `2025-05-06` 的日期对象[^4]。 2. 使用 `ZoneId.systemDefault()` 获取系统的默认时区,并通过 `atStartOfDay(ZoneId)` 方法将日期转换为带有时区信息的 `ZonedDateTime` 对象。 3. 使用 `ZonedDateTime.toInstant()` 方法将 `ZonedDateTime` 转换为 `Instant` 对象,从而获取基于 UTC 的时间戳。 4. 调用 `Instant.getEpochSecond()` 获取以秒为单位的时间戳,调用 `Instant.toEpochMilli()` 获取以毫秒为单位的时间戳。 #### 注意事项 - 如果需要指定特定时区而不是系统默认时区,可以使用 `ZoneId.of("时区ID")` 来替换 `ZoneId.systemDefault()`。例如,`ZoneId.of("UTC")` 表示 UTC 时区。 - 时间戳的单位可以是秒或毫秒,具体取决于应用场景。如果需要纳秒级精度,可以使用 `Instant.toEpochMicro()` 或其他相关方法[^5]。 #### 示例输出 假设系统时区为 UTC+8,运行上述代码后可能得到以下输出: ``` 日期 2025-05-06 的时间戳(秒):1746268800 日期 2025-05-06 的时间戳(毫秒):1746268800000 ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值