2016-05-05 2 views
1

Я разрабатываю приложение Windows Universal, которое собирает результаты гонок. Он сохраняет результат каждой гонки в базе данных sql-lite в папке приложения, чтобы пользователь мог просматривать предыдущие результаты. Однако у меня есть дополнительные требования для сохранения и открытия результатов гонки.Как обрабатывать импорт и экспорт данных из приложения Windows Universal

  1. Мне нужно иметь возможность экспортировать результаты гонки в виде CSV-файла, чтобы они могли быть открыты сторонним приложением, которое может работать на отдельной машине в другой операционной системе.
  2. Мне нужно иметь возможность экспортировать результаты в виде HTML-файла, который можно загрузить/добавить на собственный веб-сайт пользователя.
  3. Мне нужен пользователь, чтобы иметь возможность распечатывать результаты (о чем я думал, просто можно было сделать, распечатав файл HTML из браузера)
  4. Я хотел бы, чтобы у пользователя была возможность импортировать результаты гонка, созданная моим собственным унаследованным приложением в моем собственном формате.

Похоже, однако, что мы ограничены в приложении Windows Universal, чтобы сохранять файлы только в очень специфических папках в особых обстоятельствах, если мы запросили эту возможность приложения. Поэтому я получаю доступ к отказам в ошибках как для сохранения, так и для чтения файлов с помощью FileOpenPicker и FileSavePicker.

Я думаю, мне, вероятно, нужно просмотреть экспорт и импорт результатов по-другому, но после многих поисков я не смог найти правильное и рекомендуемое решение. Итак, вопрос в том, как я должен обрабатывать импорт и экспорт результатов? Должен ли я использовать папку документов пользователя или их OneDrive? Мне нужно создать веб-приложение для моего приложения, чтобы пользователь мог хранить результаты в облаке и загружать их оттуда?

ответ

2

CSV и HTML - это текстовые файлы с некоторой кодировкой. Итак, ваш вопрос о том, как читать/писать файлы с помощью JS.
Вот пример того, как создать HTML страницу с FileSavePicker:

var savePicker = new Windows.Storage.Pickers.FileSavePicker(); 
savePicker.suggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.documentsLibrary; 
savePicker.fileTypeChoices.insert("Web page", [".html"]); 
savePicker.suggestedFileName = "New page"; 

savePicker.pickSaveFileAsync().then(function (file) 
{ 
if (file) { 

var _WriteThis="<!DOCTYPE html>" + "\r\n"; 
_WriteThis = _WriteThis + "<html><head><title>Web page title</title>" + "\r\n"; 
// ..... 

Windows.Storage.FileIO.writeTextAsync(file, _WriteThis, Windows.Storage.Streams.UnicodeEncoding.utf8); 
      } 
}); 

Этот пример не требуется каких-либо специальных правил, и вы можете сохранить файл в любом месте на вас PC HDD или USD клюшку без установки возможности в манифесте (кроме системы папки)
Точно так же вы можете сохранить в формате csv

+0

Я действительно пытался это сделать на C#, однако получаю исключения Access Denied. Я думал, что это связано с ограничениями, изложенными в этом документе ... https://msdn.microsoft.com/en-us/windows/uwp/files/file-access-permissions –

+1

Нет. В этом разделе темы доступны без использования файловых сборщиков. Просто с декларацией в манифесте. –

+0

Да, абсолютно правильно. Я использовал имя файла, выбранного файловым файлом FileSavePicker, а затем сохранил мой файл через новый объект StorageFile, который не работал. Чтобы избежать ошибки Access Denied, вы должны использовать объект StorageFile, возвращаемый FileSavePicker! –

Смежные вопросы