Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Предлагает открыть файл при перетаскивании / 3 сообщений из 3, страница 1 из 1
20.11.2012, 23:07:17
    #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
20.11.2012, 23:39:49
    #38046148
Яростный Меч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Предлагает открыть файл при перетаскивании
ошибка не воспроизвелась.

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


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