diff --git a/include/class.file.php b/include/class.file.php index b9bfbe1b7d2975ebdcc467bfb826ed35b8f1ec75..891a8b5bfb851415c1ab3cbe804284ae5217f229 100644 --- a/include/class.file.php +++ b/include/class.file.php @@ -172,10 +172,18 @@ class AttachmentFile { .',type='.db_input($file['type']) .',size='.db_input($file['size']) .',name='.db_input($file['name']) - .',hash='.db_input($file['hash']) - .',filedata='.db_input($file['data']); + .',hash='.db_input($file['hash']); - return db_query($sql)?db_insert_id():0; + if (!(db_query($sql) && ($id=db_insert_id()))) + return false; + + foreach (str_split($file['data'], 1024*100) as $chunk) { + if (!db_query('UPDATE '.FILE_TABLE.' SET filedata = CONCAT(filedata,' + .db_input($chunk).') WHERE id='.db_input($id))) + # Remove partially uploaded file contents + return false; + } + return $id; } /* Static functions */