blob (音楽ファイル) をデータベースに書き込むときに問題が発生します。songA("Nothing else Matter.mp3") と言ってアップロードしようとすると、他のもの (songB("Sweet Child of mine.mp3") のように少し前にアップロードしようとしたもの) が再生されますが、正確ではありません。 1つずつオフ)もちろん、サーバーに送信される曲は正しいです(私はそれを確認しました)ファイルを再生して['tmp_name']を印刷します。
これを使ってアップロードしています
$contenttype = $_FILES['song']['type'];
$songfile = $_FILES['song']['tmp_name'];
$size = $_FILES['song']['size'];
$query = "INSERT INTO file(contenttype,file,size) values('".$contenttype."',LOAD_FILE('$songfile'),".$size.")";
これは私のdbtableファイルの構造です
CREATE TABLE file(
id INT PRIMARY KEY AUTO_INCREMENT
,contenttype VARCHAR(30)
,file LONGBLOB
,name VARCHAR(30)
,size INT
)engine=innodb;
サーバーは適切なファイルを取得しているので、障害はmysqlにあると想定しました
ファイルのダウンロード
$query = "SELECT * FROM file WHERE id=$fileid";
$res = mysql_query($query,$connection) or die("$fileid Error ".mysql_error());
if(!$res){
$status = false;
error_log("fileid: ".$fileid);
$response = new Tonic\Response(Tonic\Response::OK); //using tonic shouldn't matter
}else{
$tres = mysql_fetch_assoc($res);
$response = new Tonic\Response(Tonic\Response::OK);
$response->contentType=$tres['contenttype'];
$response->contentLength=$tres['size'];
$response->contentTransferEncoding='binary';
error_log('Length: '.strlen($tres['file'])); //strangely this is zero ?? but how is it even playing ??
$response->body = $tres['file'];
}
*EDIT データベースを数回削除しましたが、何か問題が発生しますか?