В настоящее время мы загружаем фотографию в WebMethod
через javascript
. Все работает отлично на местном уровне.System.IO.FileNotFoundException, когда проект развернут в стадии постановки, работает нормально локально
Тем не менее, когда я раскрываю это постановка, мы получаем следующее исключение: System.IO.FileNotFoundException
Наш метод javascript
выглядит следующим образом:
var formData = new FormData();
formData.append('file', $('#photo')[0].files[0]); // Image
formData.append('c', i);
formData.append('t', t);
formData.append('i', uuid);
$.ajax({
url: "/member/myserice/test.asmx/UploadImage",
type: "POST",
processData: false,
contentType: false,
data: formData,
success: function (response) {
alert('success');
},
error: function (er) {
alert('Unable to upload photo at this time, please try again later');
}
});
Теперь, как вы можете видеть, мы сохраняем загруженное изображение внутри FormData (первый параметр)
Наша WebMethod
выглядит следующим образом:
public string UploadImage()
{
var httpRequest = HttpContext.Current.Request;
var timestamp = httpRequest.Form["t"];
var consumerId = httpRequest.Form["c"];
var guid = httpRequest.Form["i"];
var pic = System.Web.HttpContext.Current.Request.Files["file"];
string fileName = Path.GetFileName(pic.FileName); // Breaks here when deployed to staging
var img = System.Drawing.Image.FromFile(pic.FileName);
//Removed additional code as it calls an external API.
}
Теперь, как упоминалось ранее это работает отлично штраф на местном, но при развертывании на постановку я получаю исключение System.IO.FileNotFoundException
на следующей строке:
string fileName = Path.GetFileName(pic.FileName);
Теперь я пытался поиска в Интернете для данного раствора или подробное объяснение в почему и как исправить, но с не помогло, может кто-то пролить некоторый свет на то, что, если мне нужно изменить, чтобы это правильно функционировало.
Заранее спасибо.
Я изменил код, чтобы теперь выглядеть следующим образом: var pic = httpRequest.Form ["file"]; но это выделяет несколько ошибок, которые находятся на строке fileName = Path.GetFileName (pic.FileName); говорит, что строка не содержит определения FileName –
Вам не нужно пытаться получить файл из файловой системы. Вы должны получить поток или массив байтов из HttpContext. Я не могу представить более подробный пример сейчас (писать с мобильного, извините) –
Нет проблем, позвольте мне рассказать и посмотреть, могу ли я найти некоторую информацию в Интернете. Будет обновлено соответственно –