Pratik 10834354 Ответов: 1

Доступ к объекту C# в javascript


Всем привет,

Я создал элемент управления ActiveX, который преобразует файл в массив байтов.
Я использую этот activeX в своем веб-приложении с помощью javascript.В IE8 я могу получить байтовый массив для файла, но выше IE8 он дает неопределенное значение при возврате.

Я публикую свой код javascript ниже

function CallFunction() {

            var obj = document.Adstringo;
            var filepath = document.getElementById("Fileupload1").value;            
            obj.Source = filepath;        
            var res = obj.GetFileBytes();  // Call ActiveX Function   
}


В переменной res я получаю неопределенное значение в версии IE больше 8. В IE8 он работает правильно.

Что я уже пробовал:

Я попытался изменить типы данных для функции в activeX.

public object GetFileBytes()
        {
            FileStream fs = new FileStream(Source, FileMode.Open, FileAccess.Read);
            BinaryReader br = new BinaryReader(fs);
            Byte[] bytes = br.ReadBytes((Int32)fs.Length);
            br.Close();
            fs.Close();

            return bytes;
        }

Я перешел от объекта к байту[]

1 Ответов

Рейтинг:
2

Richard Deeming

Элементы управления ActiveX будут работать только в Internet Explorer на Windows, и только в том случае, если пользователь разрешает вашему сайту Загружать элементы управления, а также создавать сценарии элементов управления ActiveX, не помеченных как "безопасные для сценариев".

(Ваш контроль-это НЕ помечено как "безопасно для сценариев", не так ли? Потому что это не так - он позволяет веб-сайту читать содержимое какой-нибудь файл на компьютере пользователя, и это определенно не "безопасно".)

Если вы не создаете внутренний сайт "интрасети", где вы контролируете все компьютеры, которые будут получать доступ к вашему сайту, вы должны избегать использования элементов управления ActiveX любой ценой.

Есть собственный файловый API[^] работа которого в большинстве браузеров[^], включая IE10 и выше.

function CallFunction() {
    var file = document.getElementById("Fileupload1").files[0];
    
    var reader = new FileReader();
    
    reader.onload = function(e){
        var fileBytes = e.target.result;
        // TODO: Do something with the data
    };
    
    reader.readAsArrayBuffer(file);
}

NB: По состоянию на 12 января 2016 года только самая последняя версия Internet Explorer, доступная для поддерживаемой операционной системы, получает техническую поддержку и обновления безопасности. IE8 больше не поддерживается на рабочем столе. IE9 поддерживается только в Vista и Windows Server 2008 / 2008 R2.
Вопросы и ответы по политике поддержки жизненного цикла-Internet Explorer[^]