[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Drag&Drop загрузка файлов
vbKoder
Хочу сделать Drag&Drop загрузку файлов на форум. Не могу разобраться, можно ли вообще использовать скрипт newattachment.php для загрузки с помощью XMLHttpRequest?
Движок VBulletin 4.

Мне нужно отправить файл на загрузку из js и получить ответ от php-скрипта форума с id загруженного файла и другими данными, как это происходит при загрузке вручную.
Это вообще реально сделать или придется писать с нуля php-скрипт для загрузки?

Спасибо.
Игорь_Vasinsky
т.е. JS файлы с клиента кидает на сервер? нативный XMLHttpRequest - кидается файлами?
или там flash ?, земля ему пухом

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
vbKoder
flash не используется.
За окно загрузчика отвечает файл newattachment.php и на него-же ссылается форма загрузки. Мне нужно использовать функции для загрузки файлов, без отображения окна и формы с кнопками.

Не нашел как прикрепить файл.
vbKoder
Загрузил на файлообменник. Сорри, что вопрос не по js, но меня интересует, можно ли использовать функции загрузки этого скрипта из js?
http://dropmefiles.com/LbCG3
Игорь_Vasinsky
js ничего понятия не имеет о файловой структуре. он живет в в браузере.

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
vbKoder
Я в курсе.
Видимо, я неправильно выбрал раздел.
Меня интересует, позволяет ли код файла newattachment.php использовать его для загрузки файлов через XMLHttpRequest?
AllesKlar
Цитата (Игорь_Vasinsky @ 6.10.2017 - 21:20)
js ничего понятия не имеет о файловой структуре. он живет в в браузере.

да нормально там все уже давно ;)
Он же драг и дропом хочет, а там ссылка blob-вская генерится
Как-то так
        
var dt = e.dataTransfer;
if (dt.items) {
// Use DataTransferItemList interface to access the file(s)
for (var i = 0; i < dt.items.length; i++) {
if (dt.items[i].kind == "file") {
var f = dt.items[i].getAsFile();
this.uploadAsset(f, f.name);
}
}
}
else {
// Use DataTransfer interface to access the file(s)
}
}


uploadAsset(file, name) {
const xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
const formData = new FormData();
formData.append('file', file);
formData.append('name', name);
const httpMethod = "post";
const apiMethod = 'asset/upload';
const request = Registry.coreUrl + apiMethod;
xhr.open(httpMethod, request, true);
xhr.withCredentials = true;

xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status == 200) {
let asset = {};
try {
let data = JSON.parse(xhr.responseText);
} catch (e) {
console.log(e.message);
console.log(xhr.responseText);
}

if (typeof data.assets != 'undefined') {
let currentAssets = self.state.assets;
currentAssets = currentAssets.concat(data.assets);
self.setState({assets: currentAssets});
Registry.assetsCount = currentAssets.length;
} else {
console.error("AssetStore::loadAssetList() error load assets list");
}
}
}
;

console.log("send request: " + request);
xhr.send(formData);
}


_____________
[продано копирайтерам]
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.