-4

私はユーザーに任意の
画像ファイルをアップロードできるフィールドを与えています。ファイルが
350kbを超えてはならないことを確認したいです....c#でこれを行う方法

                HttpPostedFileBase file = Request.Files[0];
                string mynewpath = Request.PhysicalApplicationPath + "Upload\\";
                if (file.ContentLength > 0)
                {
                    // here i want to check that if file size is more then 350kb then i will give error 

                    string[] extarray = new string[] { "image/jpeg", "image/jpg","image/png", "image/gif" };
                    var isallowedfile = extarray.Contains(file.ContentType);
                    if (!isallowedfile)
                    {
                        ModelState.AddModelError("", "Only image files (.jpeg , .gif , .png ) are accepted, please browse a image file");
                        return View("SurveyOptions", model);
                    }
                    string filename = Guid.NewGuid() + Path.GetFileName(file.FileName);
                    file.SaveAs(mynewpath + filename);
                }
4

2 に答える 2

1
  1. flash(actionscript)古いブラウザでは、アップロードする前にファイルサイズを取得することはできません。これに対する回避策は、ファイルサイズを取得するために非表示の要素を埋め込むことです。

  2. 最新のブラウザではHTML5 File API、ファイルサイズの読み取りに使用できます

に基づいているjqueryfiledropプラグイン(https://github.com/weixiyen/jquery-filedrop )を確認してくださいHTML5 file API

--NJ

于 2012-05-09T12:29:07.313 に答える
0

あなたはこのような何かを使うべきです:

HttpPostedFile MyFile;
int FileLen;
System.IO.Stream MyStream;
MyFileCollection = Request.Files;
MyFile = MyFileCollection[0];
FileLen = MyFile.ContentLength;

FileLenはファイルのサイズです!任意のサイズと比較してください。。。

そして、クライアントサイドでfilezizeを取得したい場合は、私が知る限り、htmlファイルアップローダーを使用してそれを行うことができます。

function validateFile()
{
var strFileName = document.form1.file1.value;
var strExtName = strFileName.substring(strFileName.lastIndexOf('.')).toLowerCase();
alert(strFileName);
alert(strExtName);
var objFSO = new ActiveXObject("Scripting.FileSystemObject");
var e = objFSO.getFile(strFileName);
var fileSize = e.size;
//file size limit for 10mb
if (fileSize > 10485760){
alert("maximum size of uploaded file should be less than 10 MB.");
return false; 
}
else
return true;
}


<input type ="file" id="file1" name="file1" contentEditable="false" onchange="validateFile();" />
于 2012-05-09T12:21:50.160 に答える