Javascript 邮递员表单数据,文件上传到web api-成功,但$http不';T
我有mvc和角度应用程序。 我想将图像文件发布到我的web api 我的web api控制器是:Javascript 邮递员表单数据,文件上传到web api-成功,但$http不';T,javascript,angularjs,asp.net-web-api2,multipartform-data,Javascript,Angularjs,Asp.net Web Api2,Multipartform Data,我有mvc和角度应用程序。 我想将图像文件发布到我的web api 我的web api控制器是: public class UploadController : ApiController { public HttpResponseMessage Post() { HttpResponseMessage result = null; var httpRequest = HttpContext.Current.Request; i
public class UploadController : ApiController
{
public HttpResponseMessage Post()
{
HttpResponseMessage result = null;
var httpRequest = HttpContext.Current.Request;
if(httpRequest.Files.Count > 0)
{
var docfiles = new List<string>();
foreach (string file in httpRequest.Files)
{
var postedFile = httpRequest.Files[file];
var filePath = HttpContext.Current.Server.MapPath("~/"+postedFile.FileName);
postedFile.SaveAs(filePath);
docfiles.Add(filePath);
}
result = Request.CreateResponse(HttpStatusCode.Created, docfiles);
}
else
{
result = Request.CreateResponse(HttpStatusCode.BadRequest);
}
return result;
}
}
这是我的工厂代码:
return function (image) {
var result = $q.defer();
var formData = new FormData();
if (image) {
formData.append("uploadFile", image);
}
$http({
method: 'POST',
url: SessionService.apiUrl + '/api/upload',
data: formData,
header: { 'Authorization': 'Bearer ' + SessionService.getToken(), 'enctype': 'multipart/form-data' }
})
.success(function (response) {
console.log(response);
result.resolve(response);
})
.error(function (response) {
console.log(response);
result.reject(response);
});
return result.promise;
}
和我的html输入:
<input type="file" id="uploadproductimage" name="uploadproductimage" class="input-xlarge">
谢谢 你有没有用像Fiddler这样的东西来确定邮递员发送的邮件和投递的邮件的区别?另外,您的getToken请求是异步的吗?angular请求仍然得到“Content-Type:application/json;charset=utf-8”。在postman请求中:“Content Type:multipart/form data;boundary=----webkitformboundaryvapsgvkoaxwheegp5”关于“getToken”——它不是已经存储在服务中的请求。在客户端上载任何文件之前收到令牌。啊。如果要上载文件,可能需要向标题标记添加新的内容类型。尝试复制与邮递员请求相同的值,看看它们是否成功。这就是我所说的,我使用了相同的请求(或者我遗漏了什么)。
<input type="file" id="uploadproductimage" name="uploadproductimage" class="input-xlarge">