我遇到了我的应用程序(ASP.NET MVC 2)的问题,我无法上传文件(在我的情况下是图像)。我已经将web.config更改为接受最多20MB,我正在尝试上传一个只有3MB的文件。
该应用程序本身有两种上传方式。初始上传,启动图库,然后附加上传以附加到图库。
最初的作品就像一个魅力,但附加的却失败了,没有任何解释。即使我重新上传初始图像作为追加,它仍然会失败。
我有点坚持这个,所以我很感激你们能提供的任何帮助。
提前致谢!
修改
如果我用Firebug“破解”表单并将其指向初始上传Url它可以正常工作,但是当它指向Url时它应该发布到它失败...
编辑2
根据Rob的要求,这是处理初始图库和附加图像的代码:
[HttpPost, ValidateAntiForgeryToken]
public RedirectToRouteResult PutGallery( // Move to Ajax
[Bind(Prefix = "Gallery", Include = "ClubId,EventId,RHAccountId,RHCategoryId,Year")] Gallery Gallery,
HttpPostedFileBase File) {
if (ModelState.IsValid && (File.ContentLength > 0)) {
if (Gallery.RHAccountId > 0) {
Gallery.RHUser = this.fdc.RHAccounts.Single(
a =>
(a.RHAccountId == Gallery.RHAccountId)).RHUser;
} else {
if (!this.fdc.RHUsers.Any(
u =>
(u.User.Name == Gallery.Username))) {
if (!this.fdc.Users.Any(
u =>
(u.Name == Gallery.Username))) {
Gallery.RHUser = new RHUser() {
User = new User() {
Name = Gallery.Username
}
};
} else {
Gallery.RHUser = new RHUser() {
User = this.fdc.Users.Single(
u =>
(u.Name == Gallery.Username))
};
};
} else {
Gallery.RHUser = this.fdc.RHUsers.Single(
u =>
(u.User.Name == Gallery.Username));
};
};
Image Image = new Image() {
Gallery = Gallery
};
this.fdc.Galleries.InsertOnSubmit(Gallery);
this.fdc.Images.InsertOnSubmit(Image);
this.fdc.SubmitChanges();
Files.Save(Image.ImageId, File);
return RedirectToAction("Default", "Site");
} else {
return RedirectToAction("Default", "Site");
};
}
[HttpPost, ValidateAntiForgeryToken]
public RedirectToRouteResult PutImage(
[Bind(Prefix = "Image", Include = "GalleryId")] Image Image,
HttpPostedFileBase File) {
Gallery Gallery = this.fdc.Galleries.Single(
g =>
(g.GalleryId == Image.GalleryId));
if (File.ContentLength > 0) {
this.fdc.Images.InsertOnSubmit(Image);
this.fdc.SubmitChanges();
Files.Save(Image.ImageId, File);
};
return RedirectToAction("Gallery", "Site", new {
Category = Gallery.RHCategory.Category.EncodedName,
GalleryId = Gallery.GalleryId
});
}
旁注:
Cassini,VS 2010的内置网络服务器能成为原因吗?
答案 0 :(得分:0)
好的,所以我想出来了,它只需要在我的机器+配置上本地安装一个长时间的IIS,让它告诉我我错过拼写controller
作为controlls
路由。
真的很烦人,所有这一切都是为了得到真正的错误,所以卡西尼部分错了......
所以,故事的寓意是,确保你拼写正确的一切。