Консультация № 70696
12.01.2007, 22:38
0.00 руб.
0 1 1
Здравствуйте!

Я тут уже давно всем надоедаю, простите.

activeX позволяет очень сильно расширить возможности JavaScript. Но подробностей никак не найду.

Создание файлов при помощи JavaScript и VBScript
http://www.codenet.ru/webmast/js/File-Read-Write.php
Автор: Алексей Голубев

Мне этого мало, нужно:
1. просмотреть папку пользователя
2. загрузить на сервер нужные файлы
3. загрузить с сервера на комп обновлённые файлы
4. переименовать / удалить файлы не в тему.

Нахожу в основном статьи о защите. Кстати о безопастности, что нужно сделать, чтобы это работало на сервере?

Обсуждение

Неизвестный
15.01.2007, 14:27
общий
это ответ
Здравствуйте, Талипов А Н!
Вот небольшой пример, который при нажатии на FOO, закачивает все файлы из выбранной юзером папки на сервер и выводит ответ сервера.
(у меня http://my/upload.php).
Два файла: один HTML (или можно с расширением HTA) на локальном, второй upload.php на сервере(у меня просто выводит массив $_FILES)
Почти не комментировал, разбирайтесь, если что пишите.
Успехов.

Приложение:
****файл с расширением HTA или HTM<body ><script language=javascript> //URL of your upload scriptvar uploadURL=‘http://my/upload.php‘function upload(uf) {//uf - array of paths of files to upload var n; http_request = false; http_request = new ActiveXObject("microsoft.xmlhttp"); if (!http_request) { alert(‘Cannot create XMLHTTP instance‘); return false; } // prepare the MIME POST data var boundaryString = ‘somerandomtextforboundary‘; var boundary = ‘--‘ + boundaryString; var requestbody = boundary + ‘\n‘ + ‘Content-Disposition: form-data; name="mytext"‘ + ‘\n‘ + ‘\n‘ + ‘mytext‘ + ‘\n‘//some text value + ‘\n‘ + boundary; for(i=0;i<uf.length;i++){ n=uf[i].split(‘\\‘) n=n[n.length-1]; requestbody += ‘\n‘ + ‘Content-Disposition: form-data; name="myfiles[]"; filename="‘ + n + ‘"‘ + ‘\n‘ + ‘Content-Type: application/octet-stream‘ + ‘\n‘ + ‘\n‘ + escape(ReadFile(uf[i])) + ‘\n‘ + boundary; } // do the AJAX request http_request.onreadystatechange = requestdone; http_request.open(‘POST‘,uploadURL, true); http_request.setRequestHeader("Content-type", "multipart/form-data; \ boundary="" + boundaryString + """); http_request.setRequestHeader("Connection", "close"); http_request.setRequestHeader("Content-length", requestbody.length); http_request.send(requestbody);}function requestdone() { if (http_request.readyState == 4) { if (http_request.status == 200) { result = http_request.responseText; dst.innerText=result; } else { alert(‘There was a problem with the request.‘); } }}function ReadFile(fname){ var fso, f, ret; fso = new ActiveXObject("Scripting.FileSystemObject"); f = fso.OpenTextFile(fname, 1); ret=f.ReadAll() f.Close() return ret;}function foo(){var shell,folder,files;shell = new ActiveXObject("Shell.Application");folder = shell.BrowseForFolder(0, "Select a folder", 0); if (folder != null){ if(files=folder.Items()){ fc = new Enumerator(files); uf = []; for (; !fc.atEnd(); fc.moveNext()){ if(!fc.item().IsFolder && fc.item().IsFileSystem) uf.push(fc.item().Path); } } if(uf.length){ if(confirm(‘This files will be uploaded:\n‘+uf.join(‘\n‘))) upload(uf) }else{ alert("Files not found!") } }}</script><button onclick=foo()>FOO</button><pre id=dst></pre></body>***файл upload.php<?php//output array of uploaded filesprint_r($_FILES);?>
Форма ответа