Главная Настройка Mobile Контакты NSFW Каталог Пожертвования Купить пасскод Pics Adult Pics API Архив Реквест доски Каталог стикеров Реклама
Доски


[Ответить в тред] Ответить в тред

Check this out!

[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 77 | 14 | 24
Назад Вниз Каталог Обновить

Аноним 01/12/17 Птн 16:56:12  166105721  
15118738187100.png (9Кб, 1052x1052)
15068518512980.jpg (56Кб, 750x422)
В этом треде я попробую в программирование, а Двощ мне будет в этом помогать. Итак ХеллоуВорлд тред!.
Задача написать код для отправки нескольких файлов на сервер маленькими кусками. JS и C# координируются в этом треде.
Аноним 01/12/17 Птн 16:57:01  166105764
Bump
Аноним 01/12/17 Птн 16:57:11  166105780
>>166105721 (OP)
Вот что я уже накодил:

<h2>File Upload</h2>

<input type="file" id="fileinput1" multiple />
<button type="button" id="submitbutton">Upload</button>
Аноним 01/12/17 Птн 17:00:03  166105943
>>166105780
Переходим собсна к скрипту:

Находим файлинпут и кнопку отправки

<script>

var fileinput = document.getElementById("fileinput1");
var btn = document.getElementById("button1");

</script>
Аноним 01/12/17 Птн 17:16:08  166106803
>>166105943
Так, я добавил еще текстовое поле для информирования и перешел к перебору файлов в цикле.

var fileinput = document.getElementById("fileinput1");
var btn = document.getElementById("button1");
var txt = document.getElementById("txt1");

btn.onclick = function () {

txt.innerText = "";

if (fileinput.files.length == 0)
{
txt.innerText = "Select one or more files.";

}
else
{
for (var i = 0; i < fileinput.files.length; i++)
{

var file = fileinput.files;



}

}


}
Аноним 01/12/17 Птн 17:19:56  166106997
11654321865451.jpg (10Кб, 338x130)
>>166106803
Получилось типа того. Теперь надо нарезать файл на мелкие кусочки, чтобы отправлять его на сервер.
Аноним 01/12/17 Птн 17:20:53  166107046
Возьми реакт. Облегчи себе жизнь
Аноним 01/12/17 Птн 17:24:07  166107236
Земля те пухом
Аноним 01/12/17 Птн 17:49:13  166108698
164961321841513[...].jpg (70Кб, 697x629)
>>166106997
Так, ёбана, я добился определенных успехов. При выборе файла размером 25МБ он нарезается на 8 кусков.

var fileinput = document.getElementById("fileinput1");
var btn = document.getElementById("button1");
var txt = document.getElementById("txt1");

btn.onclick = function () {

txt.innerText = "";

if (fileinput.files.length == 0)
{
txt.innerText = "Select one or more files.";
}
else
{
for (var i = 0; i < fileinput.files.length; i++)
{

var file = fileinput.files;
var blob = file;
var bytesPerChunk = 3757000;
var size = blob.size;
var start = 0;
var end = bytesPerChunk;
var completed = 0;
var count = size % bytesPerChunk == 0 ? size / bytesPerChunk : Math.floor(size / bytesPerChunk) + 1;
var counter = 0;

for (var n = counter; n < count; n++)
{
counter = counter + 1;

//CONSOLE
console.log("COUNTER = " + counter);

if (counter <= count)
{
var chunk = blob.slice(start, end);

//CONSOLE
console.log("CHUNK SIZE = " + chunk.size);


start = end;
end = start + bytesPerChunk;
if (count == counter) {

//CONSOLE
console.log("CHUNKED COMPLETED");

}
else
{
//CONSOLE
console.log("NEXT CHUNKED");

}

}
}

}

}


}
Аноним 01/12/17 Птн 17:51:32  166108834
>>166106997
>надо нарезать файл на мелкие кусочки, чтобы отправлять его на сервер.
Но.. нахуя???
Аноним 01/12/17 Птн 17:53:08  166108927
>>166108834
Хочет большие вебм заливать сюда, очевидно же.
Аноним 01/12/17 Птн 17:53:52  166108982
>>166108834
Ограничение размера входящего запроса на сервер 4 МБ, с целью предотвращения атак, поэтому чтобы загружать большие файлы, их нарезают.
Аноним 01/12/17 Птн 17:57:21  166109215
>>166108982
Хм. Ладно, посмотрим что ты будешь делать дальше.
Аноним 01/12/17 Птн 17:57:57  166109244
>>166108698
Так, ну что думаете по дальнейшим действиям? Очевидно, что куски надо проименовать, чтобы было понятно, что собирать на сервере. Думаю привести их к объекту FormData и захуячить в массив.
Аноним 01/12/17 Птн 18:04:52  166109624
>>166105721 (OP)
>JS и C#
ты пидар штоли?
Аноним 01/12/17 Птн 18:05:19  166109653
>>166109244
Короче, я запиздрючил отдельную функцию по генерации уникальных АйДи, буду её вызывать.

function GetFileId(file) {
function guidGenerator() {
var S4 = function () {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
};
return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
}

var uploadFileName = file.name;

function getFileExtension3(uploadFileName) {
return uploadFileName.slice((uploadFileName.lastIndexOf(".") - 1 >>> 0) + 2);
}

var ext;

ext = getFileExtension3(uploadFileName);

var fileName = guidGenerator() + "." + ext;

return fileName;
}
Аноним 01/12/17 Птн 18:06:19  166109703
>>166109624
А где ты на /b/ не пидоров видел? Что не так?
Аноним 01/12/17 Птн 18:07:56  166109795
>>166109703
Спросил на всякий случай, вдруг не пидар залетный.
Аноним 01/12/17 Птн 18:09:38  166109902
>>166105721 (OP)
Без аякса это задача уровня 90-х годов. Просты потсом гонять файлы, да и вообще формы это как-бы устврело уже.
Аноним 01/12/17 Птн 18:09:58  166109920
Завтра ищешь в интернете книжку HTML5 Canvas. Похуй если ничего не поймешь. Затем идешь на w3.org и изучаешь стандарты от корки до корки. Потом зубришь, именно, сука, вызубриваешь содержимое сайта developer.mozilla.org, чтобы от зубов отскакивало. Когда напишешь свой первый сайт - видеоредактор, по пути детально разобравшись в WebGL, скачиваешь и изучаешь любой редактор, рекомендую Notepad++ или Adobe Dreamweaver. Как переделаешь редактор, чтобы можно было добавлять объекты из 3DSMax и красивые 3D-переходы, можешь идти дальше - тебя ждет увлекательный мир JavaScript. WebCL, XUL, сверхбыстрый асинхронный Node.JS, сверхмощная мозговыебывательная многоуровневая обфускация. Отсос хиккующих выблядков / просто неудачников типа рейфага или Flash/Silverlight-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.
Аноним 01/12/17 Птн 18:16:28  166110302
>>166109920
вот и jsбляди на огонек слетаться начали
Аноним 01/12/17 Птн 18:17:02  166110338
14351686516552.jpg (101Кб, 676x760)
>>166109920
Здорово! Но я пока присвоил идентификаторы кускам и добавил кусок и ID в формдату.
Аноним 01/12/17 Птн 18:21:10  166110553
>>166110338
В принципе эти объекты можно отправлять на сервер и там ловить.
Аноним 01/12/17 Птн 18:23:22  166110695
А я вот с собеседования пришел сейчас. Сказали, что верстальщик пиздатый, осталось узнать и CMS и как делать сайт полноценным.
Аноним 01/12/17 Птн 18:24:28  166110762
>>166108698
>При выборе файла размером 25МБ он нарезается на 8 кусков
Поздравляю, ты только что пакеты.
Аноним 01/12/17 Птн 18:29:07  166111075
168451684651654[...].jpg (124Кб, 708x868)
>>166110338
Маленько переделал. Добавил оригинальное имя файла на всякий случай.
Аноним 01/12/17 Птн 18:30:09  166111184
>>166110762
Так, ну-ка подсказывай, как их отправлять на сервак с помощью XMLHTTPRequest?
Аноним 01/12/17 Птн 18:31:43  166111281
>>166105721 (OP)

> Вкатываться в программирование когда тебе 13+ лет

Аноним 01/12/17 Птн 18:31:54  166111294
>>166111075
Еще наверно надо добавить в формдату cuhk size?
Аноним 01/12/17 Птн 18:32:18  166111312
ну и где же C#?
хочу поскорее обоссать тебя
Аноним 01/12/17 Птн 18:35:40  166111496
Я короче обожаю чо нить на ассемблере делать, получаю от этого процесса удовольствие, люблю сидеть в дебагере и делать отладку, вот в процессе пишу сервер через epoll, пока он умеет обрабатывать некоторые команды на STDIN, устанавливать соединения с юзерами, при его выключении отрубает все дескрипторы, никаких там утечек памяти, пока что весит 2 килобайта, сначала это будет чатик,а если получится с графикой замутить чо нить без внешних либ, то мб какую нить простую игрульку по угару так, ну или типичный рогалик, только сетевой
Аноним 01/12/17 Птн 18:36:45  166111567
>>166111281
А что может накодить 13летний? Свой конфиг для сервера кубача?
Аноним 01/12/17 Птн 18:37:20  166111607
>>166111496

Так серверу и не нужна графика.
И ты целом ты охуенен - сервер на асме - это мощно.
Автотесты используешь?
Аноним 01/12/17 Птн 18:38:01  166111653
15112293729550.jpg (60Кб, 1083x768)
>>166105721 (OP)
Аноним 01/12/17 Птн 18:38:02  166111654
>>166111312
>ну и где же C#?
Ща скоро дойдем. Надо только пакет отправить на сервак, а там C# его будет ловить.
Аноним 01/12/17 Птн 18:38:31  166111686
>>166111567

Ага. Только у 13 летнего в 23 - когда из ВУЗа выходят, будет 10 лет какого-никакого опыта.
И именно с такими людьми надо будет конкурировать на рынке труда.
Аноним 01/12/17 Птн 18:39:29  166111746
>>166105721 (OP)
Быдлокодеры в студию
Аноним 01/12/17 Птн 18:43:13  166111980
>>166111607
Да я чисто для себя пока делаю, мне заниматься просто нечем дома. Не, я его вручную сам тестирую, и в дебагере и так запускаю
Аноним 01/12/17 Птн 18:45:34  166112117
Реши такую задачку из базового JS

Дан массив из 5 элементов (пусть будет 1 2 3 4 5) и нужно вернуть этот же массив но с переставленными первым и последним элементом.
Аноним 01/12/17 Птн 18:46:57  166112200
PHP-господин вкотился. Сразу хочу поинтересоваться, что будешь делать, если один чанк проебется?
Аноним 01/12/17 Птн 18:47:09  166112217
>>166112117
Должен быть js фрэймворк для того.
Аноним 01/12/17 Птн 18:47:55  166112254
1346505963193.jpg (33Кб, 300x300)
>>166112217
Аноним 01/12/17 Птн 18:54:07  166112612
>>166112200
Думаю отправлять чанки по одному и дожидаться ответа от сервера, если чанк проебался, отправлять его снова.
Аноним 01/12/17 Птн 18:55:03  166112662
>>166112117
Там есть метод какой-то, что-то с шифтом связано.
Аноним 01/12/17 Птн 18:58:19  166112840
хорошая попытка, таищ гугол
Аноним 01/12/17 Птн 18:58:26  166112844
>>166112612
Асинхронность не забудь, иначе js нахуй не нужон.
Аноним 01/12/17 Птн 18:58:52  166112866
Ты же понимаешь, что подобная залупа на практике нигде не используется?
Аноним 01/12/17 Птн 18:59:16  166112888
>>166111686
>будет 10 лет какого-никакого опыта
Так и вижу дауна, расписывающего 10 лет своих приключений уровня задачек егэ в резюме. Мне бы твой манямир.
Аноним 01/12/17 Птн 19:03:47  166113139
>>166112844
Ну если сразу отправить все пакеты на сервер, там будет куча-мала?
Аноним 01/12/17 Птн 19:04:39  166113187
>>166113139
Ну так пускай чанки нумерует Опкодами.
Аноним 01/12/17 Птн 19:06:43  166113273
14901181276160.jpg (159Кб, 2048x1536)
Выкатил своё говно. Пользуйся.

private void SendFile(string path)
{

//Буфер сокета
byte[] bytes = new byte[1024];
int BufferSize = 1024;
//Адрес и порт
string ip = "ip";
int port = 8080;

byte[] SendingBuffer = null;
NetworkStream netstream = null;
TcpClient client = new TcpClient(ip, port);
netstream = client.GetStream();
FileStream Fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
int NoOfPackets = Convert.ToInt32(Math.Ceiling(Convert.ToDouble(Fs.Length) / Convert.ToDouble(BufferSize)));
int TotalLength = (int)Fs.Length, CurrentPacketLength;

for (int i = 0; i < NoOfPackets; i++)
{
if (TotalLength > BufferSize)
{
CurrentPacketLength = BufferSize;
TotalLength = TotalLength - CurrentPacketLength;
}
else
CurrentPacketLength = TotalLength;
SendingBuffer = new byte[CurrentPacketLength];
Fs.Read(SendingBuffer, 0, CurrentPacketLength);
netstream.Write(SendingBuffer, 0, (int)SendingBuffer.Length);
}

Fs.Close();
netstream.Close();
client.Close();


}
Аноним 01/12/17 Птн 19:07:22  166113308
>>166113273
> byte[] bytes = new byte[1024];
> int BufferSize = 1024;
Класс.
Аноним 01/12/17 Птн 19:12:45  166113599
>>166113273
Хаха прекольная фотка собачки с сигареткой! А что ты написал я не понял! Я не погромист!
Аноним 01/12/17 Птн 19:20:03  166113979
>>166113139
Какая разница, как ты их будешь отправлять, всё равно не одним запросе. А если не одним, то хоть синхронно, хоть аснхронно, на сервере надо будет проверять готовность и склеивать когда всё получено.
Аноним 01/12/17 Птн 19:28:18  166114453
16846351684651.jpg (118Кб, 658x914)
141684161842899.jpg (64Кб, 755x425)
15419651604.jpg (143Кб, 660x892)
>>166113979
А вдруг по пути потеряется пакет? Надо быть уверенным, что всё дошло, потом клеить. Кстати отправили на сервер пакеты, как я и предполагал, они ушли кучей. Отлов на сервере на втором пике. Что скажете?
Аноним 01/12/17 Птн 19:31:04  166114619
>>166114453
>А вдруг по пути потеряется пакет?
так ты же проверяешь отправку пакета на клиенте
Аноним 01/12/17 Птн 19:32:27  166114682
>>166114619
Надо еще дождаться, когда на сервере файл запишется на диск и разблокируется потоком.
Аноним 01/12/17 Птн 19:35:27  166114834
>>166114682
На сервере целостность проверяешь размером записанного файла с сообщенным размером, можешь хэш еще считать, если дохуя параноик, по итогу отвечаешь ок или не ок. Это самая неинтересная часть, пили склеивание.
Аноним 01/12/17 Птн 19:39:08  166115033
>>166114834
Как проверить, что файл записан и можно склеивать?
Аноним 01/12/17 Птн 19:48:01  166115563
>>166115033
Может тебе стоит перед отправкой файла передать контрольную сумму, а когда ты его склеишь сверить просто?
Аноним 01/12/17 Птн 19:48:04  166115568
1968416417841641.jpg (65Кб, 644x432)
1816413213541.jpg (40Кб, 418x280)
>>166114834
Так ёпта, на сервере файлы сохранились, теперь их надо клеить в один.
Аноним 01/12/17 Птн 19:49:30  166115644
>>166115563
Проблема в том, что если файл не записан до конца и занять потоком, выскочит эксцепшен. Надо дождаться, когда файлы запишутся до конца и только потом клеить их.
Аноним 01/12/17 Птн 19:53:39  166115860
>>166115033
твой б-гмерзкий сишарп не возвращает чтоли успешное/неуспешное окончание записи данных в файл?
Аноним 01/12/17 Птн 19:56:48  166116050
Зачем люди делают такие велосипеды? Ладно бы там что-то увлекательное, интересную тулзу либо игру. Нет нужно какой-то отправлятор файлов нафигачить. Это какая-то форма байтоебства, нездоровое дерьмо в общем
Аноним 01/12/17 Птн 19:57:52  166116112
>>166115568
Можно ебануть еще один запрос из js после успешной заказчки всех файлов. При получении запроса с общим ид тупо берешь и склеиваешь все по очереди. Я бы на твоем месте делал папку с гуидом и в нее валил файлы 1,2,3 и т.д., вместо того, чтобы потом ебаться с гуидом в имени файла.
Аноним 01/12/17 Птн 19:58:31  166116157
>>166116050
нахуй гуляй пидаров всяких спросить забыли
Аноним 01/12/17 Птн 19:59:58  166116239
376712867.png (127Кб, 512x382)
>>166116157
>пидаров всяких
Но я не сишарпист
Аноним 01/12/17 Птн 20:04:38  166116485
>>166116239
так и я не сишарпист
Аноним 01/12/17 Птн 20:13:18  166116969
12186516541.jpg (236Кб, 655x896)
>>166116112
Да с гуидом никаких проблем. Меня другое беспокоит. Как сделать так, чтобы цикл приостанавливался до возврата ответа от сервера?
Аноним 01/12/17 Птн 20:16:58  166117161
>>166116969
нахуя? ебошь одним циклом. отрезал чанк и вызвал функцию отправки. будет асинхронно всё. в колбеках отправки помечай чанк отпарвленным и проверяй, все ли отправились. если все, то шли команду на сервер для сборки.
Аноним 01/12/17 Птн 20:19:25  166117314
>>166105721 (OP)
Но у этого нет практическое применения, зачем это делать?
Аноним 01/12/17 Птн 20:20:30  166117373
14380999784350.webm (456Кб, 640x360, 78:54:16)
>>166113308
> byte[] bytes = new byte[1024];
Нам этот массив и "нахуй не нужон" Он нам от бабушки остался.
Аноним 01/12/17 Птн 20:20:34  166117382
>>166117314
Видео на сервер загружать.
Аноним 01/12/17 Птн 20:21:32  166117438
>>166117314
У мамаши твоей нет практическое применения.
Аноним 01/12/17 Птн 20:22:15  166117485
>>166117161
В контроллере каша-малаша.
>в колбеках отправки помечай чанк отпарвленным и проверяй
Это как?
Аноним 01/12/17 Птн 20:23:08  166117538
>>166117382
Но зачем? Nginx из коробки сделает это лучше без костылей. А твоё решение приляжет уже на двух параллельных юзерах, грузящих файлы.
Аноним 01/12/17 Птн 20:25:20  166117660
>>166117485
Ну массивчик запили или тип того. Создал чанк, занес в массивчик, в колбеке пометил как успешно отправленный. Можно еще на сервере после каждого успешного сохранения проверку получения всех файлов делать, чтобы не заебываться с доп запросом с клиента. Хуяришь файл в темп, после успеха переносишь в папку с гуидом, проверяешь все ли файлы там есть, если все, то собираешь.
Аноним 01/12/17 Птн 20:27:29  166117785
>>166117538
nginx тоже самое делать будет, схуяли то он не приляжет на 2 || юзерах?

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 77 | 14 | 24
Назад Вверх Каталог Обновить

Топ тредов
Избранное