0

私のMVCアプリケーションでは、ユーザーがPDFファイルをアップロードできるようにしており、アップロードされたファイルはフォルダーに保存されます。ファイルは正しくアップロードされていますが、フォルダーに保存されていません...ビューコードは次のとおりです。

<a class="upload" onclick="upload(this);">

function upload(box) {
       var box = dhtmlx.modalbox({
           title: "Upload File",
           text: "<div id='form_in_box'><div>Choose a PDF file to upload <hr/><label>Enter the URL <input type='file' name='file' id='file' style='width: 400px; height: 27px;'></label><br></div><div><span class='dhtmlx_button'><input type='submit' value='Upload File' style='width: 86px' onclick='save_file(this)'></span><span class='dhtmlx_button'><input type='button' value='Cancel' onclick='close_file(this)' style='width:80px;'></span></label></div></div>",
           width: "300px"
       });
   }


function save_file(box) {
       var filename = $("#filename").val();
       if (filename == "") {
           alert("Enter the URL");
           return false;
       }
       dhtmlx.modalbox.hide(box);
       dhtmlx.message("Uploading the file");
       $.post("/FileUpload/UploadURL",
       { filename: '' + filename + '' });
   }

コントローラーコードは次のとおりです。

public ActionResult UploadURL(FormCollection data)
    {
        var filename=data["filename"];
      SaveNewFile(filename);
        return View();
    }
 public ActionResult SaveNewFile(string file)
    {

        var supportedType = new[] { "pdf" };
        var fileExt = System.IO.Path.GetExtension(file).Substring(1);
        var filename = Path.GetFileNameWithoutExtension(file) ?? "";

        if (file.Length > 0 && supportedType.Contains(fileExt))
        {

            string filePath = Path.Combine(HttpContext.Server.MapPath(_fileUploadPath),
                                           Path.GetFileName(file));
            if (!System.IO.File.Exists(filePath))
            {   

                filePath = Server.MapPath(_fileUploadPath + file);
                TempData["UploadValidationMessage_Success"] = "File upload Succeeded.";
                return View();
            }

            else
            {
                TempData["UploadValidationMessage_Failure"] = "File already exist.";
                return View();
            }
        }
        else
        {

            TempData["UploadValidationMessage_Failure"] = "Only PDF files are supported. Try again...";
            return View();
        }
    }
4

4 に答える 4

1

あなたはそれを保存していません。ファイルを保存する方法については、以下の投稿を参照してください。

MVCでのファイルのアップロード

完全なチュートリアルについては、http://haacked.com/archive/2010/07/16/uploading-files-with-aspnetmvc.aspxをご覧ください。

于 2013-03-18T04:31:15.400 に答える
0

まず、フォームのEncTypeを指定する必要があります。encTypeファイルがないと、サーバーに投稿されません

<form action="" method="post" enctype="multipart/form-data">
</form>

かみそり用

@using (Html.BeginForm("Index", "yourCOntroller", FormMethod.POST, new { enctype = "multipart/form-data" }))
{
  // some stuff
}
于 2013-03-18T05:06:15.107 に答える
0

パラメータを使用HttpPostedFileBase uploadFileしてファイルのアップロードを受け入れSaveAs(filePath);、保存してください!

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult FileUpload(HttpPostedFileBase uploadFile)
{
    if (uploadFile.ContentLength > 0)
    {
        string filePath = Path.Combine(HttpContext.Server.MapPath("../Uploads"), 
                                       Path.GetFileName(uploadFile.FileName));
        uploadFile.SaveAs(filePath);
    }
    return View();
}

また、JQuery Post を Jquery Ajax post に変更します

$('form').submit(function(event) {
                    event.preventDefault();
                    var file = $("#filename").val();
                    file = file.serialize();
                    $.ajax({  
                        type: "POST",
                        contentType:attr( "enctype", "multipart/form-data" ),
                        url: "/FileUpload/UploadURL",  
                        data: file,  
                        success: function( data )  
                        {  
                            alert( data );  
                        }  
                    });  

                    return false;  
                }  
 </script>
于 2013-03-18T04:36:42.923 に答える
0

コードのどこに実際にファイルを保存していますか??? を活用してみる

「HttpPostedFileBase」クラス。

サンプルコードはこちら

于 2013-03-18T04:41:48.607 に答える