Я выполняю операцию загрузки файлов AJAX в моем приложении ASP.net MVC, в котором я также использую angularjs.
Вызов метода услуги:
uploadFile: function() {
var defer = $q.defer();
var fileInput = document.getElementById("files");
var messageHeaders = { 'Content-Type': 'application/x-www-form-urlencoded' };
messageHeaders['X-File-Name'] = encodeURI(fileInput.files[0].name);
messageHeaders['X-File-Type'] = encodeURI(fileInput.files[0].type);
var fileData = fileInput.files[0];
$http({
url: window.ROOT + 'EmployerBenefit/UploadFile',
method: "POST",
data: fileData,
headers: messageHeaders
}).success(function(callback) {
defer.resolve(callback);
});
return defer.promise;
},
Метод контроллера:
[AllowAnonymous]
public JsonResult UploadFile(string attachmentType, int planId = 24527)
{
var success = true;
string message = ApplicationMessage.InvalidParameter;
// Validation part removed
if (success)
{
var inputStream = Request.InputStream;
var fileLenght = (int) inputStream.Length;
var fileName = HttpUtility.UrlDecode(Request.Headers["X-File-Name"]);
var bytes = new byte[fileLenght];
Request.InputStream.Read(bytes, 0, fileLenght);
if (!Directory.Exists(Server.MapPath("/Content/Images/" + CommonFunctions.ParseString(planId))))
{
Directory.CreateDirectory(Server.MapPath("/Content/Images/" + CommonFunctions.ParseString(planId)));
}
System.IO.File.WriteAllBytes(
Server.MapPath("/Content/Images/" + CommonFunctions.ParseString(planId) + "/" + fileName), bytes);
}
Response.StatusCode = (int)HttpStatusCode.OK;
return Json(new {success, message}, JsonRequestBehavior.AllowGet);
}
Вопрос:
У меня есть перехватчик для обработки ошибок ответа на заводе, хотя я установил статус ответа как OK, перехватчик набирает responseError
(500)?
Где я иду не так?
Я изменил тип контента на undefined
и это, похоже, работает.
{ 'Content-Type': undefined };
[System.Web.HttpRequestValidationException] = {"A potentially dangerous Request.Form value was detected from the client (=\"...�������#�<l�fTt_3,����>�F�<G...\")."}