2012-05-01 15 views
2

したがって、私はAsp.NET MVCでUploadifive 1.0を実装しようとしています。デバッガモードを使用すると、アップロードアクションが正常にコントローラに渡され、Server変数も渡されることがわかります。ただし、HttpPostedFileBase変数fileDataは常にnullです。私はどこでもGoogleで見て、答えを見つけることができませんでした。私は変数がfileDataと呼ばれなければならないことを知りました。それは助けにはならない。ここで最新のUploadifiveを使用してAsp.Net MVCでHttpPostedFileBaseのNull値を取得

は、ビューの一部です:

<form action="<%: Url.Action("SaveFiles", "File") %>" enctype="multipart/form-data"> 
    <input type="file" name="file_upload" id="file_upload" /> 
</form> 

<script type="text/javascript"> 
    (function ($) { 
     $(document).ready(function() { 
      $('#file_upload').uploadifive({ 
       'method': 'post', 
       'uploadScript': 'SaveFiles', 
       'formData': {'path' : 'documents'} 
      }); 
     }); 
    })(jQuery); 
</script> 

ここでコントローラのアクションです:

[HttpPost] 
public ActionResult SaveFiles(HttpPostedFileBase fileData) 
{ 
    string uploadFolder = Request.ServerVariables.Get("HTTP_X_PATH"); 
    if(string.IsNullOrWhiteSpace(uploadFolder)) 
     return Json(JsonMessageManager.GetFailureMessage("No upload folder was selected")); 

    if (fileData != null && fileData.ContentLength > 0) 
    { 
     var fileName = Path.GetFileName(fileData.FileName); 
     var path = Path.Combine(Server.MapPath("~/Content/" + uploadFolder), fileName); 
     fileData.SaveAs(path); 
     return Json(true); 
    } 
    return Json(false);    
} 

任意のポインタやヘルプをいただければ幸いです。私は失われたと感じます。

答えて

1

私はUploadifiveとまったく同じ問題がありましたので、既存のスレッド(おそらくあなたのもの)のUploadifyフォーラムに投稿しました。私がダウンロードしたUploadifiveプラグインへのアップデートを投稿したので、これはうまく動作します。実際、これはUploadifyが "Request.Forms"で利用可能な追加のフォームデータを含むのとまったく同じように機能し、追加のフォームデータに "X_"を付加しなくなりました。私はあなたに新しいバージョンを試してみることをお勧めします。

ここでの議論を参照してください:http://www.uploadify.com/forum/#/discussion/8223/no-files-attached-to-request

+0

私のスレッドに返信いただきありがとうございます。私はuploadifiveが更新されていることに気がつきましたが、uploadifiveは私のウェブサイトにとって最良の解決策ではなかったので、FFとChromeだけでなく、完全なブラウザサポートを提供するので、pluploadをダウンロードしました。 – Sebbo

+0

私は同じ問題を抱えていました。以前はバージョン1.0.2を使用していましたが、1.2.2にアップデートしました。今問題は解決しました。ありがとうtkha007 – cp100

0

キーが「FILEDATA」あなたの変数に名前を付けるのではなく、あなたのコントローラとUploadiFiveの両方が、それは同じ名前を持っていると思うことを確認することはありません。たとえば:

Javascriptを:

$(document).ready(function() { 
    $('#fileUploadDiv').uploadifive({ 
     'uploadScript': '/File/Upload', 
     'fileObjName' : 'file' 
    }); 
}); 

C#のコントローラー:

[HttpPost] 
    public PartialViewResult Upload(HttpPostedFileBase file) 
    { 
     var name = file.FileName; 
     var stream = file.InputStream; 
     // etc... 
    } 

限り、あなたのC#のコントローラ内のパラメータと同じ名前を持つfileObjNameとして、あなたは問題ないはずです。私は様々な名前でそれをテストし、名前が一致しない場合はパラメータがnullになり、一致したときには魅力的に機能しました。

パラメータがまだ機能しない場合は、コントローラ内のthis.Request.Filesを使用してデータにアクセスできるはずです。パラメータ名にかかわらずデータが通過するように見えます。

関連する問題