我正在尝试允许用户将图像作为个人资料图片上传到我的网站。我目前有一个 html 表单链接到我的 PHP 代码。我希望发生以下情况:
要更改为 UserID.Username.ext 的文件名,其中 userID 和用户名是包含 html 表单的页面上的 Razor 变量
用于替换目录中任何现有同名文件的文件
文件格式限制为 .jpg、.jpeg、.png、.gif 且大小为 300000
根据上面提到的用户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/