Как писать файлы любого размера в Javascript / Typcript для браузера? Файл, переданный через Websocket [dубликат]

  ManagementObject cs;  using (cs = new ManagementObject ("Win32_ComputerSystem.Name = '" + System.Environment.MachineName + "'")) {cs.Get ();  Console.WriteLine ( "{0}", CS [ "домен"] ToString ());  }  

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

Обязательно обратитесь к System.Management

21
задан Jiew Meng 30 November 2010 в 03:16
поделиться

6 ответов

Да, используя новый API FileWriter.

http://www.w3.org/TR/file-writer-api/

Вы можете увидеть текущую поддержку браузера здесь: http://caniuse.com/#feat=filesystem

20
ответ дан Niko Sams 15 August 2018 в 20:28
поделиться

Насколько я знаю, вы не можете писать файлы из HTML5, потому что предоставление доступа к файлам пользователя на веб-странице будет представлять угрозу безопасности.

Если вам просто нужно сохранить некоторые данные поэтому ваша страница может получить к ней доступ позже, у HTML5 есть что-то, называемое веб-хранилищем, которое может это сделать.

Или вы можете хранить данные в файлах cookie (если они очень маленькие) или на сервере.

1
ответ дан Angus 15 August 2018 в 20:28
поделиться
  • 1
    На самом деле это единственный правильный ответ – Supersharp 22 October 2015 в 07:00
  • 2
    Согласовано. Downvotes здесь не читает приведенные выше комментарии, которые указывают, что поддержка API FileWriter устарела и, скорее всего, полностью исчезнет. – Wade 29 June 2016 в 18:00

Предполагая, что ваша конечная цель - позволить пользователю сохранить файл где-нибудь там, где он его найдет, например, при щелчке правой кнопкой мыши по ссылке и выборе «Сохранить как ...», пока нет широкого охвата браузером для этих API вероятно, из-за соображений безопасности.

Что вы можете сделать, однако, API-интерфейсы или нет, - это дрессировать его ссылкой на данные : uri с скачать [ ! d1] с указанием вашего предложенного имени файла. Например:

  & lt; a id = "save" загрузить = "earth.txt" href = "data: text / plain, преимущественно безвредный & amp; # 10;" & gt; Сохранить & lt; / a & gt;  ;   

При щелчке по крайней мере в Chrome это сохранит файл, содержащий текст , в основном безвредный (и конечную новую строку), как earth.txt [ ! d4] в каталоге загрузки. Чтобы установить содержимое файла из javascript, сначала вызовите эту функцию:

  function setSaveFile (содержимое, имя_файла, mime_type) {var a = document.getElementById ('save');  mime_type = mime_type ||  «Приложения / октет-поток»;  // text / html, image / png, et c if (имя_файла) a.setAttribute ('download', file_name);  a.href = 'data:' + mime_type + '; base64,' + btoa (содержимое || '');  }  
24
ответ дан ecmanaut 15 August 2018 в 20:28
поделиться

Ответ на этот вопрос зависит от ваших ответов на следующие вопросы:

  • Вы в порядке с тем, что поддержка такой возможности в настоящее время существует только в браузерах на основе хрома (Chrome & amp Opera]?
  • Вы в порядке с использованием API-интерфейсов, принадлежащих к настоящему времени, чтобы воспользоваться такой способностью?
  • Вы в порядке с возможностью удаления упомянутого API в будущем?
  • Вы отлично справляетесь с сужением файлов, созданных с указанным API, в песочницу (место, за пределами которого файлы не могут повлиять) на диске?

Если вы ответили «да» на все вышеперечисленное, то да, с помощью FileWriter и FileSystem API, вы можете записывать файлы из контекста вкладки браузера / window с помощью Javascript.

Вот простой пример того, как API используются в тандеме для этого:

  function onQuotaRequestSuccess (givenQuota) {function saveFile (directoryEntry)  {function createFileWriter (fileEn  try) {function write (fileWriter) {var dataBlob = new Blob (["Hello world!"], {type: "text / plain"});  fileWriter.write (dataBlob);  } fileEntry.createWriter (написать);  } directoryEntry.getFile ("testFile", {create: true, exclusive: true}, createFileWriter);  } requestFileSystem (Window.PERSISTENT, givenQuota, saveFile);  } var wishQuota = 1024 * 1024 * 1024;  var quotaManagementObj = navigator.webkitPersistentStorage;  quotaManagementObj.requestQuota (wishQuota, onQuotaRequestSuccess);   

С BakedGoods * - библиотека JavaScript, которая устанавливает единый интерфейс, который может использоваться для проведения общих операций хранения во всех собственных (включая FileSystem) -нативные хранилища, вышеупомянутое выполняется с помощью этого:

  bakedGoods.set ({data: [{key: "testFile", значение: "Hello world!", введите: "text /  plain "}], storageTypes: [" fileSystem "], options: {fileSystem: {storageType: Window.PERSISTENT}}, complete: function (byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj) {}});   

Спецификация FileSystem не определяет рекомендации о том, как структуры каталогов должны появляться на диске. Например, в браузерах, основанных на хромах, песочница имеет виртуальную файловую систему (структуру каталогов, которая не обязательно существует на диске в той же форме, что и при доступе из браузера), в которой каталоги и файлы, созданные с помощью API-интерфейсы размещены.

Итак, если вы можете писать файлы в систему с API-интерфейсами, поиск файлов без API (ну, без API-интерфейса FileSystem) может быть нетривиальным делом.

* BakedGoods поддерживается не кем иным, как этим парнем прямо здесь:)

1
ответ дан Kevin 15 August 2018 в 20:28
поделиться

Да, можно читать & amp; писать файлы, используя HTML5 + JS.

Ссылка, чтобы вы начали - Изучение API файловой системы

Я также написал статью некоторое время назад для SpeckyBoy на том же тема, которую вы можете найти полезной - http://speckyboy.com/2012/10/30/getting-to-grips-with-the-html5-file-api-2/

3
ответ дан Pankaj Parashar 15 August 2018 в 20:28
поделиться

Другая возможность - рассмотреть возможность создания чего-то вроде приложения ClickOnce на платформе Windows. Это предоставит ссылку на загружаемый исполняемый файл, который будет запускаться в ОС пользователя, но может сделать обратные вызовы в Интернете для отправки и получения данных. Приложение ClickOnce может встроить элемент управления браузером и, таким образом, у вас будет как веб-совместимое приложение, способное напрямую общаться с хранилищем пользователя.

1
ответ дан Wade 15 August 2018 в 20:28
поделиться
Другие вопросы по тегам:

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