Не работают вложения после обновления

Автор scythian, 13 сентября 2008, 14:42:49

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

scythian

Здравствуйте!
Столкнулся с такой проблемой, не знаю как решить....
Обновил форум с версии 1.1 RC2 до 2.0 Beta 4

Проблема в том, что старые аттачи(фотографии) не отображаются и вообще их не возможно загрузить, точнее загружаеться файл но пустой.
Если добавляю новые аттачи - то все работает.

В БД в таблице "smf_attachments" все данные присутствуют, в каталоге форума в папке "attachments" тоже.

Второй день ломаю голову....

nu11

актуальная проблема между прочим.

Раньше смф сохранял файлы в формате


номераттача_имяфайла_старыйхэш

а теперь

номерАттача_новыйХэш

В базу пишет тоже другое.
Нужен скрипт, который допишет в базу в поле filehash все что в существующих файлах после знака _

И тогда точно заработает, проверил вручную на одном файле.

nu11

#2
Если не работают вложения, аттачи, после апгрейда до дваноль, поместить этот скрипт в корневую папку форума и запустить.
<?php 

$kkk 
445//Ид аттача, с которого начинаются сохраненные в 2.0. виде аттачи 
// В папке /attachments/ находите файл, в котором в ПОСЛЕДНЕМ помимо ида и хэша есть также имя файла посередине, его номер вводите сюда

$host "host.ex"
$user "user";
$password "pass"
$bdname "bd_name";

$msconnect mysql_connect($host$user$password) or die("db fail");
$db mysql_select_db($bdname$msconnect);



if (
$handle opendir('./attachments/')) {
    while (
false !== ($file readdir($handle))) { 
        if (
$file != "." && $file != "..") { 
            
$hash substr(basename($file), strlen(basename($file)) - 32 ); //6cd3319c9b0e472faa55ac6d978cda88

//
$crap explode('_',basename($file));
$newname $crap[0].'_'.$hash;


if($crap[0]<=$kkk && strlen($crap[0])<=5)
{
echo '>>'.$file.'<br>';
echo $newname.'<br>';

$query "UPDATE smf_attachments SET file_hash = '".$hash."' WHERE id_attach = ".$crap[0];

if(mysql_query($query))
echo'база обновлена<br><br>';
else
echo 'ошибка добавления в базу<br><br>';


if(rename('./attachments/'.$file'./attachments/'.$newname))
echo'имя файла обновлено<br><br>';
else
echo 'ошибка переименования<br><br>';



}
else
{
;
}


 
        } 
    }
    
closedir($handle); 
}

mysql_close($msconnect);
?>



Посылайте это теперь на говнокод и т.п.
Но это исправляет проблему.

Прошу модераторов прилепить тему, так как наверно многие сталкиваются с этой проблемой.

scythian

За решение спасибо , но проблема немного в другом.
Даже если по ФТП слить старые файлы, они выглядят как будто битые.

Пример во вложении.

Drakonsa

Цитата: scythian от 17 января 2010, 16:58:48
За решение спасибо , но проблема немного в другом.
Даже если по ФТП слить старые файлы, они выглядят как будто битые.

Пример во вложении.
http://www.simplemachines.ru/index.php?topic=9248.0