2012-03-29 3 views
0

내 ASP.NET MVC 응용 프로그램에서 uploadify 컨트롤을 사용하여 선택한 파일을 업로드합니다.업로드 컨트롤러 동작 및 파일 보존 문제

$("#file_upload").uploadify({ 
    'uploader': '/Scripts/uploadify/uploadify.swf', 
    'script': '/File/Upload', 
    'cancelImg': '/Scripts/uploadify/cancel.png', 
    'fileExt': '*.jpg;*.gif;*.png;*.bmp;*.htm;*.html;*.txt;*.zip', 
    'fileDesc': '*.jpg;*.gif;*.png;*.bmp;*.htm;*.html;*.txt;*.zip', 
    'auto': true, 
    'multi': true, 
    'sizeLimit': 1048576, 
    'buttonText': 'Upload Files', 

    'onComplete': function (event, queueID, fileObj, response, data) { 
     alert(fileObj.name);  
    } 
}); 

이 컨트롤러는 다음과 같은 코드가있다 : 나는 두 가지 문제가 발생하고

public class FileController : Controller 
    { 
     private static string uploadedHTMLFile = string.Empty; 

     [HttpPost] 
     public ActionResult Upload(HttpPostedFileBase fileData) 
     { 
//do something 
      } 
} 

:

  1. 컨트롤러 액션이 난의 .js 파일에 다음 코드를 삽입 한 호출되지 않습니다.
  2. OnComplete에 대한 경고가 발생하지만 업로드 된 파일은 해당 이벤트를 실행 한 후에 화면에서 사라집니다. 화면에 업로드 된 파일 목록을 어떻게 보관합니까?

<input type="file" name="file_upload" id="file_upload" />은 .cshtml 파일에 정의되어 있습니다.

답변

0

다음을 시도해보십시오.

컨트롤러 :

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Upload(HttpPostedFileBase fileData) 
    { 
     if (fileData != null && fileData.ContentLength > 0) 
     { 
      var appData = Server.MapPath("~/app_data"); 
      var filename = Path.Combine(appData, Path.GetFileName(fileData.FileName)); 
      fileData.SaveAs(filename); 
     } 
     return Json(true); 
    } 
} 

Index.cshtml보기 :

<input type="file" name="fileInput1" id="fileInput1" data-upload-url="@Url.Action("upload")" data-uploadify-root="@Url.Content("~/scripts")" /> 

Layout.cshtml 스크립트 참조 :

<script type="text/javascript" src="@Url.Content("~/Scripts/jquery-1.5.1.js")"></script> 
<script type="text/javascript" src="@Url.Content("~/Scripts/swfobject.js")"></script> 
<script type="text/javascript" src="@Url.Content("~/Scripts/jquery.uploadify.v2.1.4.js")"></script> 
<script type="text/javascript" src="@Url.Content("~/Scripts/myscript.js")"></script> 

myscript.js :

$(function() { 
    var fileInput = $('#fileInput1'); 
    var uploadifyRoot = fileInput.data('uploadify-root'); 
    var uploadUrl = fileInput.data('upload-url'); 
    fileInput.uploadify({ 
     'uploader': uploadifyRoot + '/uploadify.swf', 
     'script': uploadUrl, 
     'cancelImg': uploadifyRoot + '/cancel.png', 
     'fileExt': '*.jpg;*.gif;*.png;*.bmp;*.htm;*.html;*.txt;*.zip', 
     'fileDesc': '*.jpg;*.gif;*.png;*.bmp;*.htm;*.html;*.txt;*.zip', 
     'auto': true, 
     'multi': true, 
     'sizeLimit': 1048576, 
     'buttonText': 'Upload Files', 
     'onComplete': function (event, queueID, fileObj, response, data) { 
      alert(fileObj.name); 
     } 
    }); 
}); 
0

컨트롤러 동작이 호출되지 않는 이유는 input type="file"의 이름이 컨트롤러 동작의 매개 변수와 일치하지 않기 때문입니다.

는 컨트롤러에서 다음과 같이하십시오 : 당신이 fileData에 입력 유형의 이름을 변경하거나 다른 위에서 언급 한 바와 같이 액션에 매개 변수의 이름을 변경할 수 있습니다

[HttpPost] 
public ActionResult Upload(HttpPostedFileBase file_upload) 
{ 
} 

.

두 번째 문제에 대한 내 해결책이 해결되지 않았지만 도움이 될 수 있습니다.

uploadify 옵션에서 'removeCompleted': false을 사용해보십시오. 파일 업로드가 성공하더라도 페이지가 사라지지 않고 그대로 유지됩니다.

희망이 도움이됩니다.