powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Предлагает открыть файл при перетаскивании
3 сообщений из 3, страница 1 из 1
Предлагает открыть файл при перетаскивании
    #38046108
Няша ррр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
<!DOCTYPE html>
<html>
    <head>
        <title>Загрузить файл</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <style type="text/css">

            body {
                font: 14px/1.2em Arial;
            }

            #upload {
                width: 100%;
                border: solid 2px #a3cc52;
                border-radius: 5px;
                text-align: center;
                padding: 2em 0;  
                background: #e6ffb2;
            }
            
            #progress-info {
                visibility: hidden;
            }
            
            #progress-bar {
                width: 300px;
            }

        </style>
        <script type="text/javascript">
        
            window.addEventListener('load', function() {             
                var upload = document.getElementById('upload');
                
                upload.addEventListener('dragover', function(evt) {
                    // отменяем действие браузера по-умолчанию. По-умолчанию файл будет открыт браузером
                    evt.preventDefault();
                    evt.stopPropagation();
                    evt.dataTransfer.dropEffect = 'copy';
                });
                
                upload.addEventListener('drop', function(evt) {
                    evt.preventDefault();
                    evt.stopPropagation();
                    // file - обьект со свойствами имя, размер и т.д.                
                    var file = evt.dataTransfer.files[0];
                    var reader = new FileReader();
                    evt.preventDefault();
                    var progressInfo = document.getElementById('progress-info');               
                    var progressBar = document.getElementById('progress-bar');
                    progressInfo.style.visibility = 'visible';
                    
                    reader.onerror = function() {
                        alert('Ошибка чтения');
                    }                                   
                    
                    reader.onprogress = function(evt) {
                        progressBar.value = Math.ceil(evt.loaded / evt.total * 100);
                    }
                    
                    reader.onload = function(evt) {
                        progressInfo.style.visibility = 'hidden';
                        // данные загруженные
                        var buff = evt.target.result;
                        // отправляем на сервер
                        var xhr = new XMLHttpRequest();
                        
                        xhr.onreadystatechange = function() {
                        
                            if (this.readyState == 4) {
                                if (this.status == 200) {
                                    alert(this.responseText);
                                }
                            }
                        }
                        
                        xhr.open('POST', '/upload');
                        xhr.setRequestHeader('Content-type', file.type);
                        xhr.setRequestHeader('Content-length', file.size);
                        xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
                        xhr.setRequestHeader('X-Original-Name', file.name);                       
                        xhr.send(buff);
                    }
                    
                    reader.readAsArrayBuffer(file);
                });              
            });
        
        </script>
    </head>
    <body>
        <h1>Загрузить файл</h1>
        <div id="upload">Чтобы загрузить файл перетащие его сюда</div>
        <p id="progress-info">
            Загружено
            <progress value="0" max="100" id="progress-bar"></progress>
        <p>
    </body>
</html>



Когда впервый раз перетаскиваешь файл он все данные отправляет, но при последующих попытках предлагает открыть запустить или сохранить
...
Рейтинг: 0 / 0
Предлагает открыть файл при перетаскивании
    #38046148
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ошибка не воспроизвелась.

ps: и да, лучше раскури xhr.upload (или FormData), не придется с FileReader возиться при отправке файло.
...
Рейтинг: 0 / 0
Предлагает открыть файл при перетаскивании
    #38046204
Яростный Меч, xhr.upload это прогресс отправки данных большие данные отправляются пакетами и т.д. а с чтением файла так все и делается. вообщем не суть важно ошибка опера. описание: перетаскиваем файл на поле отправляется все заебись. один отправили. отправляем следующий а хбраузер при дропе предлагает открыть файл а не отправить.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Предлагает открыть файл при перетаскивании
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]