|
|
|
| Здравствуйте, помогите разобраться.
в виндоусе ХП есть папка с картинками.
пример:
2002 тест 1.jpg
2005 тест тест 2.jpg
2003 тест 3.jpg
2003 тест 4.jpg
2006 тест 5.jpg
после сортировки виндоуса по имени получаем следующее:
2002 тест 1.jpg
2003 тест 3.jpg
2003 тест 4.jpg
2005 тест тест 2.jpg
2006 тест 5.jpg
Как с помощью скрипта получить сортировку по номеру в имени файла, в нашем случае с 1-5, вывести это на страничку с ссылками на сами картинки. | |
|
|
|
|
|
|
|
для: Linger
(12.12.2010 в 15:54)
| | Занесите именя файлов в массив и отсортируйте его. | |
|
|
|
|
|
|
|
для: neadekvat
(12.12.2010 в 16:35)
| | подскажите, пожалуйста, как перенести имена файлов в массив. | |
|
|
|
|
|
|
|
для: Linger
(12.12.2010 в 15:54)
| | Получите массив файлов:
$m = glob("path/*.jpg"); - где path путь к папке (если нужно)
Удалите путь из имен (если получали файлы с путем):
$m = array_map('basename', $m);
Отсортируйте массив пользовательской функцией:
usort ($m, "cmp");
которая будет получать из имени файлов последние цифры с расширением, сравнивая их, и возвращая результат:
function cmp ($a, $b) {
preg_match("/\d+\.jpg/i",$a,$m);
$a = $m[0];
preg_match("/\d+\.jpg/i",$b,$m);
$b = $m[0];
if ($a == $b) return 0;
return ($a < $b) ? -1 : 1;
}
|
Вывод:
echo implode("<br>", $m); | |
|
|
|
|
|
|
|
для: sim5
(12.12.2010 в 16:49)
| | спасибо за ответ! но вот беда, скрипт показывает "2002 тест 1.jpg" после выполнения.
в папке "1" лежат 5 картинок JPG такие же как в первом посте.
<?
$m = glob("C:/1/*.jpg");
$m = array_map('basename', $m);
usort ($m, "cmp");
function cmp ($a, $b) {
preg_match("/\d+\.jpg/i",$a,$m);
$a = $m[0];
preg_match("/\d+\.jpg/i",$b,$m);
$b = $m[0];
if ($a == $b) return 0;
return ($a < $b) ? -1 : 1;
}
echo implode("<br>", $m);
?> | |
|
|
|
|
|
|
|
для: Linger
(12.12.2010 в 17:25)
| | У вас две беды:
1. Забудьте о путях типа: "C:/1/*.jpg" - не будет их никогда на реальном сервере.
2. Расширения файлов как на душу положат, разными колибрами, то верхним, то нижним регистром, потому одно изображение и получаете. Перепишите так:
$m = glob("Тут путь, но не абсолютный, тем более локальный!!!!! ПЕРЕДЕЛАТЬ!!!!/*.{jpg,JPG}", GLOB_BRACE); | |
|
|
|
|
|
|
|
для: sim5
(12.12.2010 в 17:51)
| | Отлично! все получилось! Действительно у меня все они в JPG.
Можно ли ссылки сразу на эти же файлы сделать ? что бы открывать их в браузере сразу.
Если у Вас не займет много времени. | |
|
|
|
|
|
|
|
для: Linger
(12.12.2010 в 18:01)
| | Вы сперва путь переделайте!!! Не будет у пользователя файлов, по путям которые вы указываете - "C:\1....". Возможен только удаленный адрес, для чего используйте пути относительные, либо абсолютные возвращаемые средствами РНР. Ваши ресурсы у хостера можете считать виртуальной машиной, на которой совсем не обязательно, что ваши файлы будут на диске С:, они могут лежать на каком нибудь диске "Зю". Кроме этого запрашиваются они не по локальному пути как у вас, а по сетевому адресу "http://труля-ля..../ваша_картинка".
Вот сперва с этим разберитесь, а уж затем занимайтесь ссылками. | |
|
|
|
|
|
|
|
для: sim5
(12.12.2010 в 18:11)
| | Нет, просто все это надо проделать на локалхосте. На машине с базой картинок.
Причем в идеале этот путь юзер будет сам задавать ввиде: "папка 1", "папка 2" и тд... где все эти папки лежат на "C:/папка 1" и тд.
через простую форму например get
$name=$_GET['name'];
$m = glob("c:/$name/*.{jpg,JPG}", GLOB_BRACE);
Но лучше бы если сделать кнопку "обзор моего компьютера"... только вот как.
У него будет вываливаться список картинок с ссылками на эти картинки в заданной юзером папке. | |
|
|
|
|
|
|
|
для: Linger
(12.12.2010 в 21:09)
| | Какой юзер? У юзера нет РНР, это серверный язык!
Значит так, доступ к файлам у клиента только посредством кнопки "Обзор", а путь полученного файла, после этого диалога, в целях безопасности на сервер не передается, только имя. Вопрос, много ли желающих найдется вбивать вам пути руками да еще бог знает для чего? | |
|
|
|
|
|
|
|
для: sim5
(12.12.2010 в 21:20)
| | я понимаю, но если нет интернета, и локальной сети, а оптимизировать работу нужно, то что мешает воспользоваться языком пхп? юзер это человек который будет работать со скриптом (запускать его на локалхосте и смотреть результат) | |
|
|
|
|
|
|
|
для: Linger
(12.12.2010 в 21:25)
| | Вы просто так пользуетесь РНР, или же что-то для него требуется? Наверное же просто так не запускается он, так ведь? А для программирования под локальную машину есть иные языки программирования. Собственно то чего вы хотите (оптимизировать работу - правда бог знает что за оптимизация такая), можно написать на чистом html с использованием JavaScript и VBScript. Получится hta приложение. Вот ему по боку будет и сеть, и все остальное.
Если нет сети, то и никаких $_GET и прочего, и запускать ради этих картинок сервер у себя, да еще разбираться как с ним работать, никакой юзер не будет. | |
|
|
|
|
|
|
|
для: sim5
(12.12.2010 в 21:31)
| | просто по старой памяти, когда-то очень давно изучал пхп... а так да, понимаю что проще было бы на хтмл и яваскриптом написать...
планирую поставить туда денвер и получится готовый сервер.
а юзеру и не придется разбираться, он будет выбирать папку с картинками и наблюдать результат сортировки. | |
|
|
|
|
|
|
|
для: Linger
(12.12.2010 в 21:34)
| | Куда туда? Если вы о локальной сети говорите, то.... Мне просто неокогда долго говорить сейчас, и интернет навремя отключить надо, но кратко так - забросьте эту идею, и чем дальше тем лучше. Вам еще раз повторить, что не получите вы на сервере путей атвоматом? А заставлять пользователя заниматься всякой фигней, это есть нехоршо.
Запускайте Гугл и ищите следующее "hta-приложение", а так же "FileSystemObject WScript WshShell". Вот на этом используя JavaScript и пишите. | |
|
|
|
|
|
|
|
для: sim5
(12.12.2010 в 21:42)
| | спасибо. пойду гуглить. | |
|
|
|
|
|
|
|
для: sim5
(12.12.2010 в 21:42)
| | Насчет путей, я не был бы столь категоричным.
если убрать encoding из формы, клиентские пути спокойно проявляются (без файла, конечно же).
Хотя в остальном согласен. | |
|
|
|
|
|
|
|
для: Trianon
(12.12.2010 в 21:50)
| | Вы их можете получить? Не получится, если не будет ресурс в доверенных, хотя, если речь о локальном приложении, то это не проблема, тем более для IE. А писать приложения на РНР для локального использования, ну это издивательство над пользователями. | |
|
|
|
|
|
|
|
для: sim5
(12.12.2010 в 21:55)
| |
<form method=post><input type=file name=f /><input type=submit /><form>
<?php print_r($_POST); ?>
|
| |
|
|
|
|
|
|
|
для: Trianon
(12.12.2010 в 22:31)
| | И где тут путь? Это имя файла у клиента, но не путь. | |
|
|
|
|
|
|
|
для: sim5
(12.12.2010 в 21:55)
| | Понимаю, да. Но можете помочь еще немного? добавить ссылку на файлы. все Ваши замечания понял, в будущем этот сервер переедет в интернет, вот тогда уж точно понадобится пхп. | |
|
|
|
|
|
|
|
для: Linger
(12.12.2010 в 22:33)
| | Вы сперва получите на сервере пути клиента. Ну блин, сколько вам раз повторять, что не передается путь на сервер при выборе файла клиентом, только имя. На что вы собираетесь тогда ссылаться? | |
|
|
|
|
|
|
|
для: sim5
(12.12.2010 в 22:36)
| | Речь шла о localhost-применении. И в этом аспекте пути передаются на раз. | |
|
|
|
|
|
|
|
для: Trianon
(12.12.2010 в 22:39)
| | Array ( [f] => 2002 тест 1.jpg )
Ваш скрипт на локалхосте выдает только имя. | |
|
|
|
|
 49 Кб |
|
|
для: Linger
(12.12.2010 в 22:45)
| | на самом деле дело не в локалхосте, а в браузере.
И таки да, наверное современные браузеры путь и вправду режут. Что вобщем-то правильно.
Тем не менее, см. аттач.
Как уже сказал, я не стал бы столь категорично бросаться утверждениями. Не более.
PS. то Sim5. Тем паче, при нехватке времени :) | |
|
|
|
|
|
|
|
для: Trianon
(12.12.2010 в 22:59)
| | хм. в эксплорере путь показал. и это уже хорошо :) | |
|
|
|
|
|
|
|
для: Trianon
(12.12.2010 в 22:59)
| | Даже демократичный Ослик выдаст путь только в том случае, если запрашиваемый файл будет в том же каталоге, что и html файл. Чтобы пути отображались, нужно добавить сервис в доверенные. | |
|
|
|
|
 23.3 Кб |
|
|
для: sim5
(12.12.2010 в 23:14)
| | вот я ей богу ничего специально в осла не писал :)
тем более, для test1.ru ===> | |
|
|
|
|
|
|
|
для: Trianon
(12.12.2010 в 23:25)
| | помоги, пожалуйста, прикрутить путь к скрипту от sim5. буду весьма благодарен. | |
|
|
|
|
|
|
|
для: Linger
(12.12.2010 в 23:45)
| | по "прикрутить" я ни разу не спец.
За код должен отвечать один человек. | |
|
|
|
|
|
|
|
для: Trianon
(13.12.2010 в 00:16)
| | все равно спасибо! | |
|
|
|
|
|
|
|
для: Trianon
(12.12.2010 в 23:25)
| | Вы попробуйте использовать этот путь в двух случаях: в локальном исполнении и сетевом, а то что показывает, так это мелочь, хотя не все браузеры даже это будут делать.
<script>
function imgVal(s) {
var im = document.getElementById('im');
var ims = new Image();
im.src = ims.src = s;
ims.onload = function() {
document.getElementById('res').innerHTML = ims.width + "x" + ims.height;
}
}
</script>
<img src="" id="im">
<div id="res"></div>
<form action="" enctype="multipart/form-data">
<input type="file" name="fl" onchange="imgVal(this.value)">
</form>
|
Выполните этот код, запустив его локальным html-файлом и из под Денвера, результат можете наблюдать. | |
|
|
|
|
|
|
|
для: sim5
(13.12.2010 в 09:03)
| | <input type="file" name="fl" onchange="imgVal(this.value)">
Так а и с каких бы гвоздей?
естественно. | |
|
|
|
|
|
|
|
для: Trianon
(13.12.2010 в 09:09)
| | Что естественно? this.value - это путь к файлу, напишите alert(this.value) и он его покажет, и картинку покажет, и ее размер, но ТОЛЬКО В ЛОКАЛЬНОМ ИСПОЛНЕНИИ, но не все браузеры. В сетевом исполнении никто уже не покажет ничего. А alert(путь), это фигня, для красоты. | |
|
|
|
|
|
|
|
для: sim5
(13.12.2010 в 09:17)
| | Sim5, успокойтесь уже...
За серверное применение вообще - кто-нибуть хоть полслова сказал?
Что путь будет доступен везде - кто-нибуть хоть полслова сказал?
Что этот подход рекомендуется к применению - кто-нибуть хоть полслова сказал?
Там вроде как я даже дописал специально "в остальном согласен". | |
|
|
|
|
|
|
|
для: Trianon
(13.12.2010 в 09:24)
| | Ну здрасте, приехали ) А автор то чего хочет? Чай как сервер установить и им "раздавать", я потому сразу и сказал - бред. | |
|
|
|
|
|
|
|
для: sim5
(12.12.2010 в 22:36)
| | понял что с "обзором папок" пролетаем, но если задавать путь вручную? пусть это и не благородно к пользователю. | |
|
|
|
|
|
|
|
для: sim5
(12.12.2010 в 22:36)
| | подойдет ли такой метод:
При запуске, от пользователя, должен быть передан один обязательный параметр – путь к папке которую нужно обработать ( прямой, а не относительный ). Пусть он будет называться «d».
require_once 'console/Getopt.php';
$options = Console_Getopt::getopt($argv,'d:');
|
отсюда:
http://forum.xakmod.ru/showthread.php?p=535 | |
|
|
|
|
|
|
|
для: Linger
(12.12.2010 в 22:52)
| | Задавайте свои вопросы не мне, вы меня достали свои непониманием ей богу.
function setFolder()
On Error Resume Next
Set objShellApp = CreateObject("Shell.Application")
Set objFolder = objShellApp.BrowseForFolder(0, "Выберите папку с изображениями", 1)
fldr = objFolder.Self.Path
If fldr Then
//здесь далее средствами VBS и вышеуказанными
//выводим, либо что угодно хотите делайте с файлами этой папки
//и методы такие есть, и в том на что я дал ссылку - читайте, изучайте, пробуйте
End If
End function
|
| |
|
|
|
|
|
|
|
для: sim5
(12.12.2010 в 21:55)
| | ->А писать приложения на РНР для локального использования, ну это издивательство над пользователями.
А если локалка на сто компов с выделенным сервером, почему бы не сделать локальный web-сервер с поддержкой php, сделать на нем сайт и пусть юзеры пользуются на здоровье... нормальная идея чем она вам так не нравится? | |
|
|
|
|
|
|
|
для: lightning.say
(15.12.2010 в 12:32)
| | "локальный" - в данном диалоге - употребляется совершенно в другом значении. | |
|
|
|
|
|
|
|
для: Trianon
(15.12.2010 в 12:59)
| | локалка она и в африке локалка, что тут не ясно чел хотел в локалке писать на пхп, а вы его переубедили что все это бред.. и не надо этим заниматься, но вы не правы... | |
|
|
|
|
|
|
|
для: lightning.say
(15.12.2010 в 15:27)
| | Вот же настырный товарищ. Вы понимаете суть вопроса заданного автором? | |
|
|
|
|
|
|
|
для: sim5
(15.12.2010 в 15:49)
| | ладно проехали.... | |
|
|
|
|
|
|
|
для: lightning.say
(15.12.2010 в 12:32)
| | Уважаемый, вы вникните в суть вопроса, а нравится, не нравится, это уже вкусовые качества и к вопросу отношения не имеют. | |
|
|
|
|
|
|
|
для: sim5
(15.12.2010 в 14:09)
| | товарищ постоянно оправдывает ник. | |
|
|
|
|
|
|
|
для: Trianon
(15.12.2010 в 14:16)
| | ) | |
|
|
|