出于某种原因,当我上传文档并将文件名存储在mysql表中时,文件名扩展名不包含在名称中。例如,我上传了pdf文件" car.pdf"它存储在mysql表中的方式是" car。"(请参阅单词后面的句点,不包括文件扩展名)。我查了一下这个网站,我也用Google搜索过,但找不到明确的答案。
$doc_name = mysqli_real_escape_string($dbc, trim($_FILES['doc']['name']));
$doc_type = $_FILES['doc']['type'];
$doc_size = $_FILES['doc']['size'];
if(!empty($title)){
if(!empty($doc_name)){
if (($doc_type == 'application/pdf') || ($doc_type == 'application/msword') || ($doc_type == 'application/vnd.openxmlformats-officedocument.wordprocessingml.document')){
if(($doc_size > 0) && ($doc_size <= FILE_MAXFILESIZE)){
if ($_FILES['doc']['error'] == 0) {
$final_name = time() . $doc_name;
$target = $uploadpath . $final_name;
if(move_uploaded_file($_FILES['doc']['tmp_name'], $target)) {
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) or die ('There was a problem with your query. Please, contact administrator');
if(!empty($description)){
$query = "INSERT INTO uploaded_files (file, title, description, date_time, user_id, dep_id) VALUES ('$final_name', '$title', '$description', now(), '" . $_SESSION['user_id'] . "', '$dep_id')";
}.... rest of the code goes here
答案 0 :(得分:0)
如果字符串的长度超过了列定义中的字符串,MySQL可能会截断您要插入的字符串。在这种情况下,请检查文件路径名称的字符串名称是否长于32。
通常,人们会期望此INSERT查询失败,但如果配置设置允许则可能不会这样做。
如果mysql配置在您的控制之下(并且您希望避免对插入的字符串进行此类静默截断),请首先将strict_trans_tables
添加到sql_mode
中的my.ini
设置中(或my.conf
)文件。
祝你好运。