我正在尝试允许用户将图片作为个人资料图片上传到我的网站。我目前有一个与我的PHP代码链接的html表单。我想发生以下情况:
要更改为UserID.Username.ext的文件名,其中userID和用户名是包含html表单的页面上的Razor var
文件替换目录中具有相同名称的任何现有文件
文件限制为.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>";}}}
我在上面的各个区域找到了以下代码:
$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语法。
感谢您的帮助和建议!
答案 0 :(得分:0)
上传文件时,您可以在此处更改名称,例如代码
move_uploaded_file(
$files['tmp_name'][$id],
'uploads/' . $fn
);
格式为move_uploaded_files($ oldname,$ newname),因此您可以为其命名并附加文件扩展名。
我真的建议使用codeigniter或laravel等框架而不是经典的php。为您提供了许多工具,让您的生活更轻松。我建议从codeigniter开始,因为它更容易。
答案 1 :(得分:0)
上传文件时,您可以轻松更改文件名称。
$filename = $_FILES['file']['name'];
$file_ext = substr($filename, strripos($filename, '.'));
$new_filename = UserId.Username.$file_ext;
$tempFile = $_FILES['file']['tmp_name'];
$targetFile = yourpath.$new_filename;
move_uploaded_file($tempFile, $targetFile);