1

Я пытаюсь отправить видео из галереи (папка с картинками) и отправить его на мой сервер в multipart.System.IO.FileNotFoundException при получении файла из PicturesLibrary

Для этого я использую изолированное хранилище и пытаюсь получать файл из моих картин папки таким образом:

using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication()){ 
.... 
string fileName = System.IO.Path.GetFileName(path); 
string contentType = GetMimeType(fileName); 
StorageFolder folder; 
if (path.IndexOf("Pictures", StringComparison.OrdinalIgnoreCase) >= 0) { 
    folder = KnownFolders.PicturesLibrary; 
    Debug.WriteLine("folder: " + folder.Name); 
} 
... 
StorageFile file = await KnownFolders.PicturesLibrary.GetFileAsync(fileName); 
...        

на последнюю строку коде я получаю такое исключение:

System.IO.FileNotFoundException: The system cannot find the file specified. (Exception from HRESULT: 0x80070002) 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult() 
    at xxx.xxx.xxx.xxx>d__19.MoveNext() 

Пожалуйста, обратите внимание эти значения:

путь :: C: \ Data \ Users \ Public \ Pictures \ Фотопленка \ WP_20150708_001.mp4

Папка: Картинки

имя_файла: WP_20150708_001.mp4

Я также попытался отправить путь, но он дал мне это исключение:

System.ArgumentException: Value does not fall within the expected range.\r\n

Почему он не находит мой файл, который в моем телефоне?

+1

Разве вы не отправляете 'путь' в' GetFileAsync' вместо 'fileName'? Или, по крайней мере, вам нужен относительный путь, который должен включать в себя подкаталог «Camera Roll». – juharr

+0

Спасибо, см. Мое редактирование – eeadev

+0

@juharr пожалуйста, как использовать относительный путь? – eeadev

ответ

0

Фрагмент кода странный, так как вы начинаете с path (как вы его получили?), А затем сделайте предположение о том, на какую библиотеку указывает, а затем попытайтесь открыть StorageFile на основе разделения имени файла на путь ; почему бы не просто создать StorageFile непосредственно с path?

Но вы должны никогда постоянно хранить путь строки к StorageFile, так как это может измениться, если пользователь перемещает приложение или контент в/из SD карты и т.д. Hard-кодирования (или сохраняющихся) путей является верным -fire способ иметь приложение, которое не будет работать (или будет аварийно), если пользователь когда-либо изменит, где вещи хранятся на их устройстве.

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

+0

Torr, на самом деле он работает, просто меняя папку, я не рассматривал «Camera Roll» (C: \ Data \ Users \ Public \ Pictures \ Camera Roll \), а KnownFolders.PicturesLibrary - это C: \ Data \ Users \ Public \ Картинки \ – eeadev

+0

Я неправильно читаю оригинальный вопрос из-за использования IsolStorageFile и System.IO. –

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