2011-08-25 55 views
1

我正在使用上传文件。我想将文件内容以字节的形式保存在数据库中。这里是我到目前为止的代码:如何使用AsyncFileUpload上传文件并将字节保存在数据库中?

protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e) 
{ 
    if (DetailsView1.CurrentMode == DetailsViewMode.Insert) 
    { 
     if (Session["ProjectId"] != null) 
     { 
      int Projectid = Convert.ToInt32(Session["ProjectId"]); 
      string Description = (DetailsView1.FindControl("RadEditor1") as RadEditor).Content; 
      RadAsyncUpload radAsyncUpload = DetailsView1.FindControl("RadAsyncUpload1") as RadAsyncUpload; 

      UploadedFile file = radAsyncUpload.UploadedFiles[0]; 
      string s = file.FileName; 
      string path = System.IO.Path.GetFileName(s); 

      radAsyncUpload.UploadedFiles[0].SaveAs(Server.MapPath("Uploads/") + path); 
      string Contenttype = radAsyncUpload.UploadedFiles[0].ContentType; 
      int fileSize = radAsyncUpload.UploadedFiles[0].ContentLength; 
      float length = float.Parse(fileSize.ToString()); 
      byte[] fileData = new byte[file.InputStream.Length]; 
      file.InputStream.Read(fileData, 0, (int)file.InputStream.Length); 


        ProTrakEntities objEntity = new ProTrakEntities(); 
        ProjectFile objFile = new ProjectFile(); 
        objFile.ProjectId = Projectid; 
        objFile.FileName = s; 
        objFile.FileType = Contenttype; 
        objFile.FileSize = length; 
        objFile.CreatedBy = "admin"; 
        objFile.CreatedDate = DateTime.Now; 
        objFile.Description = Description; 
        objFile.FileData = fileData; 
        objEntity.AddToProjectFiles(objFile); 
        objEntity.SaveChanges(); 

     } 
     DetailsView1.ChangeMode(DetailsViewMode.ReadOnly); 
     ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind('navigateToInserted');", true); 



    } 
} 

我发现了一个错误,而在该行file.InputStream.Read(fileData, 0, (int)file.InputStream.Length);上传:

Could not find file 'D:\Tiru\Projects\ProTrak\App_Data\RadUploadTemp\0ngsv0wx.fxs'.

这个错误是什么意思,我怎么能得到摆脱它?

回答

0

使用这样的..

RadAsyncUpload radAsyncUpload = InsertItem.FindControl("AsyncUpload1") as RadAsyncUpload; 
     UploadedFile file = radAsyncUpload.UploadedFiles[0];  
     byte[] fileData = new byte[file.InputStream.Length]; 
     file.InputStream.Read(fileData, 0, (int)file.InputStream.Length); 
+0

谢谢为你响应sir.I已经使用过这个先生,所以我得到错误:file.InputStream.Read(fileData,0,(int)file.InputStream.Length);为--- “ 'd:\ Tiru \项目\ ProTrak \ App_Data文件\ RadUploadTemp \ 0ngsv0wx.fxs'。” – tiru

+0

避免错误的一种方法就是注释此行radAsyncUpload.UploadedFiles [0] .SaveAs(Server.MapPath(“Uploads /”)+ path); – masif

+0

是的先生。但我想保存在Uploads中,所以如何继续? – tiru

1

由于EM不具有编辑权限.. EM发布乌尔几乎不做修改代码,看看它是否工作.. 我的代码

protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e) 
{ 
    if (DetailsView1.CurrentMode == DetailsViewMode.Insert) 
    { 
     if (Session["ProjectId"] != null) 
     { 
      int Projectid = Convert.ToInt32(Session["ProjectId"]); 
      string Description = (DetailsView1.FindControl("RadEditor1") as RadEditor).Content; 
      RadAsyncUpload radAsyncUpload = DetailsView1.FindControl("RadAsyncUpload1") as RadAsyncUpload; 

      UploadedFile file = radAsyncUpload.UploadedFiles[0]; 
      string s = file.FileName; 
      string path = System.IO.Path.GetFileName(s); 


      string Contenttype = radAsyncUpload.UploadedFiles[0].ContentType; 
      int fileSize = radAsyncUpload.UploadedFiles[0].ContentLength; 
      float length = float.Parse(fileSize.ToString()); 
      byte[] fileData = new byte[file.InputStream.Length]; 
      file.InputStream.Read(fileData, 0, (int)file.InputStream.Length); 


        ProTrakEntities objEntity = new ProTrakEntities(); 
        ProjectFile objFile = new ProjectFile(); 
        objFile.ProjectId = Projectid; 
        objFile.FileName = s; 
        objFile.FileType = Contenttype; 
        objFile.FileSize = length; 
        objFile.CreatedBy = "admin"; 
        objFile.CreatedDate = DateTime.Now; 
        objFile.Description = Description; 
        objFile.FileData = fileData; 
        objEntity.AddToProjectFiles(objFile); 
        objEntity.SaveChanges(); 

     } 
     DetailsView1.ChangeMode(DetailsViewMode.ReadOnly); 
     ClientScript.RegisterStartupScript(Page.GetType(), "mykey", "CloseAndRebind('navigateToInserted');", true); 

radAsyncUpload.UploadedFiles[0].SaveAs(Server.MapPath("Uploads/") + path); 

    } 
} 
相关问题