2012-03-28 19 views
3

アップロードするファイルをサーバーに検証する必要があります。検証は、アップロードする前に行う必要があります。すなわち、クライアント側で検証が完了したことを示す。この作業は、ASP.NET MVC3 Webページで行う必要があります。また、すべてのブラウザで動作するはずです。 IE9,8,7/FF/Chrome。私はIEにはFileReader APIがないことを知りました。アップロード前のファイルサイズを確認する

私の質問は、MVC3 Webページでアップロードする前にファイルサイズを検証する方法です。

答えて

1

ネットMVCソリューション:

私はあなたのViews > Sharedフォルダ内HttpPostedFileBase

のデータ型を使用して、"EditorTemplates"と呼ばれる新しいフォルダを作成し、この使用しています:

@model HttpPostedFileBase 

@Html.TextBox("", null, new { type = "file" }) 

このHttpPostedFileBaseオブジェクトをコントローラから次のことを行い方法:

public Files Upload(HttpPostedFileBase files) 
{ 
    if (files.ContentLength > 0) { 

    ..... 
} 

HttpPostedFileBaseクラスのん。ContentLengthプロパティを使用すると、利用可能なファイルのアップロードボックスを持っているので、これはそれを行います投稿ファイル

のバイト数が含まれています。 ASP.NET Webフォームソリューションで

if (fuPictures.HasFile == true) 
{ 
    int fileSize = fuPictures.FileBytes; 
} 

はあなたのファイルサイズを与える:

<asp:FileUpload ID="fuPictures" runat="server" /> 

はこのような何かをするのOnClickまたはオンデマンドイベントでボタンを作ります。お役に立てれば。

+0

@Praveenこのヘルプあなたのでしょうか? – Termato

0

それはHTML 5をサポートしているブラウザ用に来るとき、それは簡単なJavaScriptで実現することができます。

HTMLの構文

<input type="file" id="myFile" /> 

Javascriptの構文

//gets the element by its id 
var myFile = document.getElementById('myFile'); 

//binds to onchange event of the input field 
myFile.addEventListener('change', function() { 
    //this.files[0].size gets the size of your file. 
    alert(this.files[0].size); 

}); 

しかし、それ古いブラウザになってしまいます(私たちは皆、Internet Explorerを探しています)。クライアント側でこれを行う唯一の方法は、ActiveXを使用することです:

var myFile = document.getElementById('myFile'); 

var myFSO = new ActiveXObject("Scripting.FileSystemObject"); 
var filepath = myfile.file.value; 
var thefile = myFSO.getFile(filepath); 
var size = thefile.size; 
    alert(size + " bytes"); 
0

あなたはjqueryのを使用することによって達成することができます:

<span> 
<b>Attachment</b> (8 MB only)<label id="attached" style="color:red; margin-left:5px"></label> 
</span> 
<input type="file" id="Attachment" name="Attachment" class="admin_textfeildmedium" value="" style="width:551px" accept="image/*"> 
jQuery(document).ready(function() { 


jQuery('#Attachment').bind('change', function() { 
          //fileUpload = 0; 
          var iSize = (this.files[0].size/1024); 
          if (iSize/1024 > 1) { 
           if (((iSize/1024)/1024) > 1) { 
            fileUpload = 0; 
           } else { 
            iSize = (Math.round((iSize/1024) * 100)/100); 
            if (iSize <= 8) { 
             fileUpload = 1; 
            } else { 
             fileUpload = 0; 
            } 
           } 
          } else { 
           fileUpload = 1; 
          } 
          if (fileUpload == 0) { 
           // alert("Your attachment exceeded 8MB."); 
           jQuery('#attached').html('Your attachment exceeded 8MB.'); 
           jQuery('#Attachment').val(''); 
          } 

         }); 

        }); 
関連する問題