【发布时间】:2015-08-06 04:32:22
【问题描述】:
我正在尝试允许用户将图片作为个人资料图片上传到我的网站。我目前有一个链接到我的 PHP 代码的 html 表单。我希望发生以下情况:
要更改为 UserID.Username.ext 的文件名,其中 userID 和用户名是包含 html 表单的页面上的 Razor var
用于替换目录中任何现有同名文件的文件
文件被限制为 .jpg,.jpeg,.png,.gif 和 300000 的大小
根据上面提到的userID和Username在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 语法。
感谢您的帮助和建议!
【问题讨论】:
标签: php mysql file-upload