2015-11-23 3 views
0

Я использую файловую систему html5 api, и я пытаюсь загрузить некоторые изображения в C# WebApi;Загрузка из файловой системы HTML5 api

Но они всегда пусты. нет матер, что я стараюсь, я использую следующий код в API

[HttpPost] 
[Route("api/quotation/pictures")] 
public HttpResponseMessage PostImages() { 
    try { 
     _logger.Trace("Post pictures ..."); 
     NameValueCollection parameters = HttpContext.Current.Request.Params; 
     string filename = parameters.GetValues("id")[0]; 
     var files = HttpContext.Current.Request.Files; 
     if (files.Count > 0) { 
      // .. other code 
     } 
    } 
} 

А следующий код в JS

// img = variable with some img options. 
var data = new FormData(); 
fileService.getFile(img.viewpath.split('/').pop()).then(function (f) { 
    // f = FileEntry 
    data.append(img.FileNameOnDevice, f); 
    $.ajax({ 
     url: url, 
     type: "POST", 
     data: data, 
     contentType: false, 
     processData: false 
    }).success(defImg.resolve).error(defImg.reject); 
}, function() { 
    console.error("not found"); 
}); 
+0

Вы пытаетесь получить доступ к файловой системе пользователя с помощью JavaScript? Поскольку вы не можете (в браузере). – Jonathan

+0

Я могу использовать файловую систему для отображения файлов, хранящихся в файловой системе (я их там пишу) – Kiwi

ответ

0

Это было легко исправить,

так f был FileEntry , Я должен был запросить сам файл, поэтому сменив код на:

// img = variable with some img options. 
var data = new FormData(); 
fileService.getFile(img.viewpath.split('/').pop()).then(function (f) { 
    // f = FileEntry 
    f.file(function(file){ 
     data.append(img.FileNameOnDevice, file); 
     $.ajax({ 
      url: url, 
      type: "POST", 
      data: data, 
      contentType: false, 
      processData: false 
     }).success(defImg.resolve).error(defImg.reject); 
    }, defImg.reject); 
}, defImg.reject); 

решил проблему