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

Автор 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