我正在使用Jquery File Script替换现有的上传脚本。在我当前的脚本中,我捕获原始图像数据并将其推送到我的数据库,但它似乎不适用于jquery上载脚本。
以下是我在私有函数中使用它的方法: handle_file_upload
private function handle_file_upload($uploaded_file, $name, $size, $type, $error) {
$file = new stdClass();
$file->name = $this->trim_file_name($name, $type);
$file->size = intval($size);
$file->type = $type;
$error = $this->has_error($uploaded_file, $file, $error);
if (!$error && $file->name) {
$file_path = $this->options['upload_dir'].$file->name;
$append_file = !$this->options['discard_aborted_uploads'] &&
is_file($file_path) && $file->size > filesize($file_path);
clearstatcache();
if ($uploaded_file && is_uploaded_file($uploaded_file)) {
// multipart/formdata uploads (POST method uploads)
if ($append_file) {
file_put_contents(
$file_path,
fopen($uploaded_file, 'r'),
FILE_APPEND
);
} else {
move_uploaded_file($uploaded_file, $file_path);
}
} else {
// Non-multipart uploads (PUT method support)
file_put_contents(
$file_path,
fopen('php://input', 'r'),
$append_file ? FILE_APPEND : 0
);
}
$file_size = filesize($file_path);
if ($file_size === $file->size) {
if ($this->options['orient_image']) {
$this->orient_image($file_path);
}
$file->url = $this->options['upload_url'].rawurlencode($file->name);
foreach($this->options['image_versions'] as $version => $options) {
if ($this->create_scaled_image($file->name, $options)) {
$file->{$version.'_url'} = $options['upload_url']
.rawurlencode($file->name);
}
}
} else if ($this->options['discard_aborted_uploads']) {
unlink($file_path);
$file->error = 'abort';
}
$file->size = $file_size;
$file->delete_url = $this->options['script_url']
.'?file='.rawurlencode($file->name);
$file->delete_type = 'DELETE';
// ====== NEW DB CODE ======= //
$server = 'XXXX';
$user = 'XXX';
$pass = 'XXX';
$database= 'XXX';
$db = mysql_connect($server,$user,$pass);
$db_select = mysql_select_db($database,$db);
ob_start(); // Start capturing stdout.
imagejpeg($uploaded_file); // As though output to browser.
$image_bin = mysql_real_escape_string(ob_get_contents()); // the raw jpeg image data.
ob_end_clean(); // Dump the stdout so it does not screw other output.
$user_id = 5;
$title = '';
$caption = '';
$mapimage = 0;
$SQL = "INSERT INTO images VALUES (NULL, {$user_id}, '{$title}', "
. "'{$caption}', '{$image_bin}' )";
$mrh = mysql_query($SQL);
if (!$mrh) {
$res->st=false;
$res->error="Error creating image record: " .$SQL. mysql_error($dbh);
return $res;
}
// ====== END NEW DB CODE ======= //
}
else {
$file->error = $error;
}
return $file;
}
它会插入图像,但在查看图像时,我会看到一个破碎的图像图标,这让我觉得它没有插入它应该是什么。图像的DB内容也非常小(字节),告诉我我没有插入我认为我的内容。
知道我可能缺少什么吗?
答案 0 :(得分:1)
也许:
imagejpeg($file_path);
而不是:
imagejpeg($uploaded_file);