ASP .NET MVC Core WEB API 使用 Angular JS 上传文件显示错误
ASP .NET MVC Core WEB API upload file showing error using Angular JS
这是我的客户端html(我使用ng文件上传)
<button type="file" ngf-select="uploadFileToUrl($file)"
ngf-max-size="100MB">
<!--ngf-max-height="1000"-->
Photo
</button>
这是我的客户端js
$scope.uploadFileToUrl = function (file) {
console.log(file) // Here console prints my file information
alert(file);
var data = new FormData();
data.append('photo', file)
$.ajax({
type: "POST",
url: "http://localhost:22475/api/FileUpload",
contentType: false,
processData: false,
data: data,
success: function (message) {
alert(message);
},
error: function () {
alert("There was error uploading files!");
}
});
}
这是我的服务器端
private IHostingEnvironment hostingEnv ;
public FileUploadController(IHostingEnvironment env)
{
this.hostingEnv = env;
}
[HttpPost]
public async Task<IActionResult> PostProfilePicture(ICollection<IFormFile> files) // Here i get file count 0 on tool tip
{
var uploads = Path.Combine(hostingEnv.WebRootPath, "uploads");
foreach (var file in files)
{
if (file.Length > 0)
{
using (var fileStream = new FileStream(Path.Combine(uploads, file.FileName), FileMode.Create))
{
await file.CopyToAsync(fileStream);
}
}
}
return null;
}
这里我通过网络搜索文件上传错误,我得到了这段代码,但它不起作用,任何人都可以帮助并指出我在这里做错了什么..
您在 URL 中调用的操作结果名称是 'FileUpload',服务器端操作结果名称是 'PostProfilePicture'。您需要在双方保持相同的名称,或者您可以在服务器端代码中的 httppost 上方添加路由名称
[Route("api/FileUpload")]
[HttpPost]
是的,我得到了答案
public async Task<IActionResult> Post(ICollection<IFormFile> files)
{
var v = Request.Form.Files[0];
var uploads = Path.Combine(hostingEnv.WebRootPath, "uploads");
using (var fileStream = new FileStream(Path.Combine(uploads, v.FileName), FileMode.Create))
{
await v.CopyToAsync(fileStream);
}
return null;
}
从请求中获取文件并上传,谢谢
这是我的客户端html(我使用ng文件上传)
<button type="file" ngf-select="uploadFileToUrl($file)"
ngf-max-size="100MB">
<!--ngf-max-height="1000"-->
Photo
</button>
这是我的客户端js
$scope.uploadFileToUrl = function (file) {
console.log(file) // Here console prints my file information
alert(file);
var data = new FormData();
data.append('photo', file)
$.ajax({
type: "POST",
url: "http://localhost:22475/api/FileUpload",
contentType: false,
processData: false,
data: data,
success: function (message) {
alert(message);
},
error: function () {
alert("There was error uploading files!");
}
});
}
这是我的服务器端
private IHostingEnvironment hostingEnv ;
public FileUploadController(IHostingEnvironment env)
{
this.hostingEnv = env;
}
[HttpPost]
public async Task<IActionResult> PostProfilePicture(ICollection<IFormFile> files) // Here i get file count 0 on tool tip
{
var uploads = Path.Combine(hostingEnv.WebRootPath, "uploads");
foreach (var file in files)
{
if (file.Length > 0)
{
using (var fileStream = new FileStream(Path.Combine(uploads, file.FileName), FileMode.Create))
{
await file.CopyToAsync(fileStream);
}
}
}
return null;
}
这里我通过网络搜索文件上传错误,我得到了这段代码,但它不起作用,任何人都可以帮助并指出我在这里做错了什么..
您在 URL 中调用的操作结果名称是 'FileUpload',服务器端操作结果名称是 'PostProfilePicture'。您需要在双方保持相同的名称,或者您可以在服务器端代码中的 httppost 上方添加路由名称
[Route("api/FileUpload")]
[HttpPost]
是的,我得到了答案
public async Task<IActionResult> Post(ICollection<IFormFile> files)
{
var v = Request.Form.Files[0];
var uploads = Path.Combine(hostingEnv.WebRootPath, "uploads");
using (var fileStream = new FileStream(Path.Combine(uploads, v.FileName), FileMode.Create))
{
await v.CopyToAsync(fileStream);
}
return null;
}
从请求中获取文件并上传,谢谢