現在、独自のコントロールにラップされた System.Web.UI.WebControls.FileUpload を使用しています。
Telerik のライセンスがあります。誰かがそれを経験したことがあるか、それともより良いものを提案できるか知りたいですか?
によって測定されるいくつかの基準
- 検証
- パフォーマンス
- 複数のファイル
- ローカライズ(ブラウズは難しい)
- 安全
現在、独自のコントロールにラップされた System.Web.UI.WebControls.FileUpload を使用しています。
Telerik のライセンスがあります。誰かがそれを経験したことがあるか、それともより良いものを提案できるか知りたいですか?
によって測定されるいくつかの基準
個人的には、Telerik コントロールをお持ちの場合は、試してみたいと思います。それらは非常に便利で、ユーザー エクスペリエンスも優れていることがわかりました。彼らのアップロード制御は非常に優れています。
これについては別の質問に投稿したばかりですが、この ActiveX コントロールを使用すると、画像を迅速かつ効率的に処理できます。コンポーネントは、送信前にクライアント マシン上の画像のサイズを実際に変更します。これにより、不要な帯域幅が削減され、一度に複数の画像が転送されます。
DeanBrettleのNeatUploadをチェックしてください。これは基本的に、追加の構成可能性を備えたファイルをディスクにストリーミングするカスタムHttpHandlerです。それはオープンソースであり、ディーンは彼のユーザーをサポートするための絶対的なスターです。
リンクは常に機能するとは限らないので、ここに再びあります:http ://www.igloolab.com/jquery-html5-uploader/
コントローラー:(元のコードから変更しました。何かを忘れないように願っていますが、かなり明確です)
<HttpPost()> _
Public Function Upload(uploadedFile As System.Web.HttpPostedFileBase) As ActionResult
If uploadedFile IsNot Nothing Then
If uploadedFile.ContentLength > 0 Then
Dim mimeType As String = Nothing
'Upload
Dim PathFileName As String = System.IO.Path.GetFileName(uploadedFile.FileName)
Dim path = System.IO.Path.Combine(Server.MapPath("~/App_Data/Uploads"), PathFileName)
If Not System.IO.Directory.Exists(Path) Then
System.IO.Directory.CreateDirectory(Path)
End If
Dim firstLoop As Boolean = True
uploadedFile.SaveAs(path)
Next
End If
Return Nothing
End Function
これはビューです(cssとjsへのリンクを忘れないでください;))
<h1>
@SharedStrings.Upload</h1>
<h2>
@SharedStrings.UploadInformation</h2>
<div id="dropbox">
</div>
<div id="upload">
</div>
<script type="text/javascript">
$(function () {
var fileTemplate = "<div id=\"{{id}}\">"; fileTemplate += "<div class=\"progressbar\"></div>"; fileTemplate += "<div class=\"preview\"></div>"; fileTemplate += "<div class=\"filename\">{{filename}}</div>"; fileTemplate += "</div>"; function slugify(text) { text = text.replace(/[^-a-zA-Z0-9,&\s]+/ig, ''); text = text.replace(/-/gi, "_"); text = text.replace(/\s/gi, "-"); return text; }
$("#dropbox").html5Uploader({ onClientLoadStart: function (e, file) {
var upload = $("#upload"); if (upload.is(":hidden")) { upload.show(); }
upload.append(fileTemplate.replace(/{{id}}/g, slugify(file.name)).replace(/{{filename}}/g, file.name));
}, onClientLoad: function (e, file) { /*$("#" + slugify(file.name)).find(".preview").append("<img src=\"" + e.target.result + "\" alt=\"\">");*/ }, onServerLoadStart: function (e, file) { $("#" + slugify(file.name)).find(".progressbar").progressbar({ value: 0 }); }, onServerProgress: function (e, file) { if (e.lengthComputable) { var percentComplete = (e.loaded / e.total) * 100; $("#" + slugify(file.name)).find(".progressbar").progressbar({ value: percentComplete }); } }, onServerLoad: function (e, file) { $("#" + slugify(file.name)).find(".progressbar").progressbar({ value: 100 }); }
});
});
</script>
そして私のCSS
/*html 5 uploader*/
#dropbox
{
/*picture where people would drag-drop their files to*/
background-image:url(../Images/UploadToMedia.png);
height:128px;
margin-bottom:40px;
margin-left:auto;
margin-right:auto;
background-repeat:no-repeat;
margin-top:0;
width:128px;
}
FileUploadControl を拡張して、検証を追加しました。また、複数のファイルを一度にアップロードできる独自のコントロールも作成しました。現在、両方を評価中です。2 つの異なるアップロード コントロールを維持する必要はありません。
独自のファイル アップロード コントロールの一部として、テキスト、テキスト ボックス、ボタンなどを表示できるフラッシュ ベースのソリューションを試すことができます。これらのソリューションは通常、JavaScript が Flash のファイル アップロード ボックスを動的に呼び出すことができるように、JavaScript と Flash の間のブリッジとして機能する 1x1 の Flash ムービーをページに配置します。
最近のプロジェクトでは、FancyUploadを使用してまさにそれを行いました。