- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将音频文件上传到目录中并将文件名信息存储在数据库中。我已经成功地做到了这一点。
接下来,我想为每个音频文件创建一个默认图像,使用 PHP 将音频文件标题添加到图像中,然后在文件名上附加一个唯一的 id。我已经成功地做到了这一点。我是通过following this tutorial.了解到这一点的
示例图片:
我遇到的问题是在上传时将音频文件图像插入到数据库列中。这是数据库图像。我需要将新创建的音频图像的文件名放入 rt_file 列中。这样我就可以稍后再重复它。
我希望就我出错的地方获得一些帮助。
我得到的当前错误是: undefined variable :rt_file。我不明白为什么...?这不是像我在插入语句上面定义的那样定义它吗:
$rt_file = preg_replace('/\s+/', '-', "../ringtones/rtimage/".($ringtone_image[0]['ring_name'])."-".substr(md5(microtime()),rand(0,26),5).".jpg");
我真的很讨厌发布这么多代码,我知道这会引起人们的不满,所以我提前道歉,但我不确定问题出在哪里。
如果有人有时间看一下这个,那就太好了,如果没有的话我完全理解。
这是我的代码:
<?php
include_once($_SERVER['DOCUMENT_ROOT'] . "/core/database.php");
$ringDir= "../ringtones/";
if(!is_dir($ringDir)){
mkdir('../ringtones/', 0775);
}
.
if (isset($_FILES['file'])) {
if (empty($_FILES['file']['name'])) {
?>
<div class="add-errors">Please add an audio file!</div>
<?php
} else {
$name = $_FILES['file']['name'];
$filename = preg_replace("/\.[^.]+$/", "", $name);
$temp = $_FILES['file']['tmp_name'];
$type = $_FILES['file']['type'];
$size = $_FILES['file']['size'];
$ext = strtolower(end(explode('.', $name)));
$upload = substr(md5(microtime()),rand(0,26),5);
// Restrictions for uploading
$allowed = array(
'audio/mp3',
'audio/mp4',
'audio/mpeg',
'audio/ogg',
'audio/opus',
'audio/webm');
// Recognizing the extension
switch($type){
case 'audio/mp3':
$ext= '.mp3';
break;
case 'audio/mp4':
$ext= '.mp4';
break;
case 'audio/mpeg':
$ext= '.mpeg';
break;
case 'audio/ogg':
$ext= '.ogg';
break;
case 'audio/opus':
$ext= '.opus';
break;
case 'audio/webm':
$ext= '.webm';
break;
}
// upload variables
$ring_path = $ringDir.$filename."-".$upload.$ext;
// check if extension is allowed.
if (in_array($type, $allowed)) {
// Checking the size of the audio file.
if ($size <= 5242880) {
// Move the original file aswell.
move_uploaded_file($temp, $ring_path);
/*#############THIS IS WHERE I'M ADDING THE TEXT TO THE DEFAULT IMAGE###########
################################################################################*/
// link to the font file no the server
$fontname = '../fonts/Roboto-Regular.ttf';
// controls the spacing between text
$i=30;
//JPG image quality 0-100
$quality = 100;
function create_image($ringtone_image){
global $fontname;
global $quality;
$rt_file = preg_replace('/\s+/', '-', "../ringtones/rtimage/".($ringtone_image[0]['ring_name'])."-".substr(md5(microtime()),rand(0,26),5).".jpg");
//if the file already exists dont create it again just serve up the original
if (!file_exists($rt_file)) {
}
// define the base image that we lay our text on
$im = imagecreatefromjpeg("../ringtones/ringtone-image.jpg");
// setup the text colours
$color['white'] = imagecolorallocate($im, 255, 255, 255);
// this defines the starting height for the text block
$height = 50;
$y = imagesy($im) - $height;
// loop through the array and write the text
foreach ($ringtone_image as $value){
// center the text in our image - returns the x value
$x = center_text($value['ring_name'], $value['font-size']);
imagettftext($im, $value['font-size'], 0, $x, $y, $color[$value['color']], $fontname,$value['ring_name']);
// add 32px to the line height for the next text block
//$i = $i+32;
}
// create the image
imagejpeg($im, $rt_file, $quality);
//}
return $rt_file;
}
function center_text($string, $font_size){
global $fontname;
$image_width = 550;
$dimensions = imagettfbbox($font_size, 0, $fontname, $string);
return ceil(($image_width - $dimensions[4]) / 2);
}
$ringtone_image = array(
array(
'ring_name'=> 'Add Ringtone Title',
'font-size'=>'16',
'color'=>'white'),
);
$ringtone_image = array(
array(
'ring_name'=> $_POST['ring_name'],
'font-size'=>'16',
'color'=>'white'),
);
// run the script to create the image
$filename = create_image($ringtone_image);
/*#############END TEXT TO DEFAULT IMAGE###########
###################################################*/
try {
$ring_id = Input::get('ring_id');
$creation = date('Y-m-d H:i:s');
$ring_name = Input::get('ring_name');
$category = Input::get('category_id');
$ring_path = $ring_path;
$rt_file = $rt_file;
$insertdata = DB::getInstance()->insert('ringtones', array(
'ring_id' => $ring_id,
'creation' => $creation,
'ring_name' => $ring_name,
'category_id' => $category,
'ring_path' => str_replace("../ringtones/", "", $ring_path),
'rt_file' => str_replace("../ringtones/rtimages/", "", $rt_file),
));
if(!$insertdata) {
?>
<div class="add-errors">There was a problem uploading the ringtone!</div>
<?php
} else {
?>
<div class="add-message">Your ringtone has been uploaded! <a href="add-ringtone.php">Add another</a> or <a href="../index.php">Return Home</a> </div>
<?php
}
} catch(Exception $e) {
?>
<div class="add-errors">
<?php die($e->getMessage()); ?>
</div>
<?php
}
} else {
?>
<div class="add-errors">Your ringtone size is too big!</div>
<?php
}
}
else {
?>
<div class="add-errors">Your have uploaded a forbidden extension!</div>
<?php
}
}
}
?>
<section>
<h1>Audio Upload</h1>
<p>Use the form below to upload new ringtone</p>
<form action="" method="post" enctype="multipart/form-data">
<label for="ring_name">Ringtone Title</label>
<input type="text" name="ring_name" maxlength="42" placeholder="Give this field a title">
<label for="category_id">Choose a category</label>
<select name="category_id">
<option value="">Please Choose</option>
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
<option value="4">Option 4</option>
<option value="5">Option 5</option>
<option value="6">Option 6</option>
</select>
<label for="file">Ringtone</label>
<input type="file" name="image" >
<p id="size">Maximum file size of 5MB</p>
<input type="submit" value="Upload">
</form>
</section>
最佳答案
试试这个:
$rt_file = null; // here we're initiate the variable with null to avoid undefined var problem
function create_image($ringtone_image) {
global $rt_file; // here we're accessing global variable to use it inside function
// rest part
}
关于php - undefined variable 不允许我将文件插入数据库表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24129797/
我正在 csv 上使用 hadoop 来分析一些数据。我使用sql/mysql(不确定)来分析数据,现在陷入了僵局。 我花了好几个小时在谷歌上搜索,却没有找到任何相关的东西。我需要一个查询,在该查询中
我正在为 Bootstrap 网格布局的“简单”任务而苦苦挣扎。我希望在大视口(viewport)上有 4 列,然后在中型设备上有 2 列,最后在较小的设备上只有 1 列。 当我测试我的代码片段时,似
对于这个令人困惑的标题,我深表歉意,我想不出这个问题的正确措辞。相反,我只会给你背景信息和目标: 这是在一个表中,一个人可能有也可能没有多行数据,这些行可能包含相同的 activity_id 值,也可
具有 3 列的数据库表 - A int , B int , C int 我的问题是: 如何使用 Sequelize 结果找到 A > B + C const countTasks = await Ta
我在通过以下功能编写此查询时遇到问题: 首先按第 2 列 DESC 排序,然后从“不同的第 1 列”中选择 只有 Column1 是 DISTINCT 此查询没有帮助,因为它首先从第 1 列中进行选择
使用 Bootstrap 非常有趣和有帮助,目前我在创建以下需求时遇到问题。 “使用 bootstrap 在桌面上有 4 列,在平板电脑上有 2 列,在移动设备上有 1 列”谁能告诉我正确的结构 最佳
我是 R 新手,正在问一个非常基本的问题。当然,我在尝试从所提供的示例中获取指导的同时做了功课here和 here ,但无法在我的案例中实现这个想法,即可能是由于我的问题中的比较维度更大。 我的实
通常我会使用 R 并执行 merge.by,但这个文件似乎太大了,部门中的任何一台计算机都无法处理它! (任何从事遗传学工作的人的附加信息)本质上,插补似乎删除了 snp ID 的 rs 数字,我只剩
我有一个 df , delta1 delta2 0 -1 2 0 -1 0 0 0 我想知道如何分配 delt
您好,我想知道是否可以执行以下操作。显然,我已经尝试在 phpMyAdmin 中运行它,但出现错误。也许还有另一种方式来编写此查询。 SELECT * FROM eat_eat_restaurants
我有 2 个列表(标题和数据值)。我想要将数据值列 1 匹配并替换为头文件列 1,以获得与 dataValue 列 1 和标题值列 2 匹配的值 头文件 TotalLoad,M0001001 Hois
我有两个不同长度的文件,file2 是一个很大的引用文件,我从中提取文件 1 的数据。 我有一行 awk,我通常会对其进行调整以在我的文件中进行查找和替换,但它总是在同一列中进行查找和替换。 所以对于
假设我有两个表,如下所示。 create table contract( c_ID number(1) primary key, c_name varchar2(50) not
我有一个带有 varchar 列的 H2 表,其检查约束定义如下: CONSTRAINT my_constraint CHECK (varchar_field <> '') 以下插入语句失败,但当我删
这是最少量的代码,可以清楚地说明我的问题: One Two Three 前 2 个 div 应该是 2 个左列。第三个应该占据页面的其余部分。最后,我将添加选项来隐藏和
在 Azure 中的 Log Analytics 中,我为 VM Heartbeat 选择一个预定义查询,我在编辑器中运行查询正常,但当我去创建警报时,我不断收到警报“查询未返回 TimeGenera
在 Azure 中的 Log Analytics 中,我为 VM Heartbeat 选择一个预定义查询,我在编辑器中运行查询正常,但当我去创建警报时,我不断收到警报“查询未返回 TimeGenera
今天我开始使用 JexcelApi 并遇到了这个:当您尝试从特定位置获取元素时,不是像您通常期望的那样使用sheet.getCell(row,col),而是使用sheet.getCell(col,ro
我有一个包含 28 列的数据库。第一列是代码,第二列是名称,其余是值。 public void displayData() { con.Open(); MySqlDataAdapter
我很沮丧:每当我缩小这个网页时,一切都变得一团糟。我如何将网页居中,以便我可以缩小并且元素不会被错误定位。 (它应该是 2 列,但所有内容都合并为 1)我试过 但由于某种原因,这不起作用。 www.o
我是一名优秀的程序员,十分优秀!