Скачать файл с ajax в C # .net MVC

Мне пришлось решить проблему «Поясните, является ли IP-адрес локальным или нет», и я сначала подумал о том, чтобы создать список IP-адресов, которые были локальными, а затем сопоставлены с ним. Вот что привело меня к этому вопросу. Тем не менее, я позже понял, что есть более прямой способ сделать это: попробуйте связать на этом IP-адресе и посмотреть, работает ли он.

_local_ip_cache = []
_nonlocal_ip_cache = []
def ip_islocal(ip):
    if ip in _local_ip_cache:
        return True
    if ip in _nonlocal_ip_cache:
        return False
    s = socket.socket()
    try:
        try:
            s.bind((ip, 0))
        except socket.error, e:
            if e.args[0] == errno.EADDRNOTAVAIL:
                _nonlocal_ip_cache.append(ip)
                return False
            else:
                raise
    finally:
        s.close()
    _local_ip_cache.append(ip)
    return True

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

0
задан Jin Yong 21 February 2019 в 04:18
поделиться

1 ответ

Это не так просто сделать, но есть сценарий, который может вам помочь. Я обычно использую FileSaver.js , чтобы сделать это, это с открытым исходным кодом. FileSaver помогает решить проблемы несовместимости браузера, он также хорошо протестирован.

Вот фрагмент кода, который я поднял из моего текущего проекта. Это простой javascript и не требует jQuery или чего-либо еще.

В этом примере имя файла жестко закодировано как «my_excel_file.xlsx», но вы можете получить имя файла из API, если выставите правильный заголовок из API. Я думаю, что ответил, как справиться с этим где-то в SO.

<html>
  <head>
  <script src="FileSaver.min.js"></script>
  <script>        
    function download() {            
        var xhr = new XMLHttpRequest();
        xhr.open("GET", "http://your.url", true);
        xhr.setRequestHeader("Content-type","application/json");
        xhr.setRequestHeader("Access-Control-Allow-Origin", "*");
        xhr.setRequestHeader("Accept", "application/octet-stream");
        //xhr.setRequestHeader("Authorization", "Bearer ......");
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 && xhr.status == 200) {
                var blob = new Blob([xhr.response], {type: "octet/stream"});
                var fileName = "my_excel_file.xlsx";
                saveAs(blob, fileName);
            }
        }
        xhr.responseType = "arraybuffer";
        xhr.send();
    }        
  </script>
</head>
<body>
  <button onclick="javascript:download()">Download Excel File</button>
</body>
</html>
0
ответ дан Rosdi Kasim 21 February 2019 в 04:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: