2012-09-30 2 views
2

각 개별 파일의 이름을 업로드 한 후 데이터베이스에 저장하려고합니다. 성공적으로 파일을 업로드하는 코드가 있습니다. plupload 및 mvc3을 사용하여 업로드 한 후 파일 이름을 데이터베이스에 저장합니다.

$(function() { 
    $("#uploader").plupload({ 
     // General settings 
     runtimes: 'silverlight,flash,html5', 
     url: '@Url.Content("~/FileUploadChunks/UploadChunk")', 
     max_file_size: '10mb', 
     chunk_size: '1mb', 
     unique_names: true, 
     // Flash settings 
     flash_swf_url: '/plupload/js/plupload.flash.swf', 
     // Silverlight settings 
     silverlight_xap_url: '/plupload/js/plupload.silverlight.xap' 
    }); 

}); 

는 컨트롤러

[HttpPost] 
    public ActionResult UploadChunk(int? chunk, int chunks, string name) 
    { 
     var fileUpload = Request.Files[0]; 
     var uploadpath = Server.MapPath("~/App_Data/UploadedFiles"); 
     chunk = chunk ?? 0; 
     using (var fs = new FileStream(Path.Combine(uploadpath, name), chunk == 0 ? FileMode.Create : FileMode.Append)) 
     { 
      var buffer = new byte[fileUpload.InputStream.Length]; 
      fileUpload.InputStream.Read(buffer, 0, buffer.Length); 
      fs.Write(buffer, 0, buffer.Length); 
     } 
     return Content("chunk uploaded", "text/plain"); 
    } 
입니다

그냥, 내가보기로 돌아갑니다 이름을 캡처하고 목록에 추가하려고 이런 식으로 뭔가를 시도, 테스트하지만 난 알아낼 수 없습니다 보기에서 목록을 인쇄하여 내용을 보는 방법.

[HttpPost] 
    public ActionResult UploadChunk(int? chunk, int chunks, string name) 
    { 
     var fileUpload = Request.Files[0]; 
     var uploadpath = Server.MapPath("~/App_Data/UploadedFiles"); 
     chunk = chunk ?? 0; 
     using (var fs = new FileStream(Path.Combine(uploadpath, name), chunk == 0 ? FileMode.Create : FileMode.Append)) 
     { 
      var buffer = new byte[fileUpload.InputStream.Length]; 
      fileUpload.InputStream.Read(buffer, 0, buffer.Length); 
      fs.Write(buffer, 0, buffer.Length); 
     } 
     List<string> list = new List<string>(); 

     foreach (string inputTagName in Request.Files) 
     { 
      HttpPostedFileBase file1 = Request.Files[inputTagName]; 
      if (file1.ContentLength > 0) 
      { 
       list.Add(file1.FileName); 
      } 
     } 
     ViewBag.List = list; 
     } 

궁극적으로 이름을 반복하여 데이터베이스에 저장하려고합니다. 어떤 도움을 주셔서 감사합니다. 감사합니다

답변

0

당신은 우리가 당신에게 좋은 도움을 제공하기 위해 데이터베이스 등에 관한 어떠한 정보도 제공하지 않았습니다. 그러나 나는 그것을 줄 것이다.

다른 질문에 대답하려면,

내가보기로 돌아가려면 목록을 이름을 캡처하고 에 추가하려고이 같은 시도,하지만 난 을 인쇄하는 방법을 알아낼 수 없습니다 그 내용을보기위한리스트.

보기에

을, 같은 것을 그들에게 보여 주어야한다 :

@foreach (string fileName in ViewBag.List) 
{ 
    @fileName 
    <br /> 
} 

당신은 당신이 모델을 가질 필요가 데이터베이스에 파일 이름을 저장, 엔티티 프레임 워크 코드 주먹을 사용하는 가정.
public class UploadedFileName 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
} 

는 컨트롤러에 당신은 당신이 이런 식으로 사용되는 foreach 문을 변경할 수 있습니다 :

foreach (HttpPostedFile file in Request.Files) 
{   
    if (file.ContentLength > 0) 
    { 
     UploadedFileName uploadedFile = new UploadedFileName(); 
     uploadedFile.Name = file.FileName; 
     databaseContext.UploadedFileNames.Add(uploadedFile); 
    } 
} 

오류가있는 경우 HttpPostedFile 위, HttpPostedFileBase해야 할 수도 있습니다. databaseContext은 데이터베이스 컨텍스트입니다. 일반적으로 db입니다.

+0

도움을 주셔서 감사합니다. 아직 작동하도록 노력하고 있습니다. SQL에 대한 링크를 사용하고 있습니다. @foreach가 뷰에서 작동하지 않는 이유는 is가 처음에는 비어 있고 아무것도 포함하지 않아서 오류가 발생하기 때문입니다. 제출 한 후 새로로드 된 데이터로 새로 고침해야합니다. 감사 – user973671