【问题标题】:Webmatrix file upload errorWebmatrix 文件上传错误
【发布时间】:2012-11-27 08:05:43
【问题描述】:

我正在尝试创建一个上传页面,在其中上传一个 .swf 文件,然后将文件名添加到我的数据库中。以前我已经能够做到这一点,但是,现在它似乎给我错误“索引超出范围。必须是非负数并且小于集合的大小。参数名称:索引”我的代码如下:

@{
Page.Title = "Add Game";

//Variables
var GameName = "";
var Tags = "";
var Gamefile = "";

//Required fields
Validation.RequireField("Name", "Please give the game a name.");
Validation.RequireField("file", "Please upload a file.");
//Maximum name length
Validation.Add("Name",
    Validator.StringLength(
        maxLength: 100,
        errorMessage: "Name must be less than 100 characters")
        );
//SWF file validation
Validation.Add("file",
    Validator.Regex(@"^.*\.(swf|SWF)$", "Invalid filetype, you must upload a .swf flash file")
    );

    if (IsPost && Validation.IsValid()) {
    var db = Database.Open("Surgestuff");
    var gCat = "";
    var fileData = Request.Files[0];
    var fileName = Guid.NewGuid().ToString() + ".swf";
    var fileSavePath = Server.MapPath("~/upload/" + fileName);
    var AddBy = WebSecurity.CurrentUserName;
    gCat=Request["formCat"];
    Gamefile = fileName;
    fileData.SaveAs(fileSavePath);
    var SQLINSERT = "INSERT INTO Games (Name, file_path, Category, AddBy) " + "VALUES (@0, @1, @2, @3)";
    db.Execute(SQLINSERT, GameName, Gamefile, gCat, AddBy);
    Response.Redirect("~/Games");

    }
}

而且由于某种原因,即使我提交了文件,

var fileData = Request.Files[0]; 给了我这个错误

【问题讨论】:

  • 您的表单代码会很有用。您还没有从表单本身中删除 enctype 属性吗?
  • 啊,是的,添加 enctype="multipart/form-data" 修复了它。谢谢!!除了现在我的验证存在问题,因此即使提交了文件,我的验证也会显示“请上传文件。”

标签: file-upload razor webmatrix


【解决方案1】:

Web Pages 2 验证助手不适用于input type="file"。它们仅适用于 Request.Form 集合中包含的元素。文件上传出现在Request.Files 集合中。

您可以采用多种方法来验证文件上传。您可以使用 ModelState:

if(IsPost && Request.Files[0].ContentLength == 0){
    ModelState.AddError("file", "You must choose a file");
}

if (IsPost && Validation.IsValid() && ModelState.IsValid) {
    // etc 

或者您可以添加一个隐藏字段,并在提交表单时,将其值填充为通过 JavaScript 上传的文件的值。然后,您可以像当前尝试那样使用新的 Validation 帮助器,但改为在隐藏字段上。

【讨论】:

  • 好的,谢谢,我以为是这个问题,但我不知道如何解决。
猜你喜欢
  • 1970-01-01
  • 2010-12-28
  • 2020-03-22
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
相关资源
最近更新 更多