2

だから私はAsp.NETMVCでUploadifive1.0を実装しようとしています。デバッガーモードを使用すると、アップロードアクションがコントローラーに正常に渡され、サーバー変数も渡されることがわかります。ただし、HttpPostedFileBase変数fileDataは常にnullです。私はグーグルでどこを見ても答えを見つけることができませんでした。変数はfileDataと呼ばれる必要があることがわかりました。しかし、それは役に立ちません。

ビューの一部は次のとおりです。

<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);            
}

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

4

2 に答える 2

1

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

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

于 2012-05-07T02:58:49.223 に答える
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...
    }

fileObjNameC#コントローラーのパラメーターと同じ名前である限り、問題はありません。さまざまな名前でテストしましたが、名前が一致しない場合はパラメーターがnullになり、一致した場合はチャームのように機能しました。

this.Request.Filesそれでもパラメータが機能しない場合は、コントローラの内部を使用してデータにアクセスできるはずです。パラメータ名に関係なく、データが届くようです。

于 2014-01-31T18:46:39.290 に答える