2011-06-28 14 views
0

私は写真のためにaspファイルをアップロードしています。私がしたいことは、選択したファイルが前のファイルと同じ名前であれば、「このイメージ名は既に存在しますあなたがそれを交換したいのですか?もしそうなら、現在の画像を新しい画像で上書きするだけですが、そうでなければそれをそのままにしておきなさい、どうすればいいですか? JavaScriptの私はまた、それが動作するために何が起こっているのであれば、私かのように説明してくださいので、私はJavascriptで合計初心者ですのでご注意ください、あなたにASP.NETとC#FileUpload

<div class="style"> 
Choose an Image:&nbsp;<asp:FileUpload ID="getImage" runat="server" Width="150px" BorderStyle="Inset" EnableViewState="true" /> 
<asp:RegularExpressionValidator ID="RegularExpressionValidator" 
runat="server" ControlToValidate="getImage" CssClass="Error" Display="dynamic" ValidationExpression=".*(\.[Jj][Pp][Gg]|\.[Gg][Ii][Ff]|\.[Jj][Pp][Ee][Gg]|\.[Pp][Nn][Gg])" ErrorMessage="Select a correct file format"></asp:RegularExpressionValidator> 
</div> 

ありがとうございました(私はJavaScriptを使用してあまりにも良いではないよ:))ことを使用することができます5歳だった。

私は本当に助けに感謝します。誰かがこれが問題以前のファイルと新しいものを取り入れずにこの質問をします指摘したように

+0

私はファイルが存在するかどうかを知ることができますが、私はそれを選択するとどのファイルを選択するか知っていなければなりません。名前はちょうど私がFileUploadが私が使用することができるイベントを持っているとポップアップを生成する方法を知っているだけではない – SuperUser555

+0

私はAC#のイベントでコードすることができるように方法があると思っている場合(uploadedFile.Name == existingFile.Name)その後、C#からjavascript呼び出しを行いますか?これはできますか? – SuperUser555

+0

私は答えを掲載しましたが、それは5歳のレベルではないと思います...ごめんなさい。 – Peter

答えて

0

私のソリューションでは、ポストバックの直前にチェックが行われます。私もjqueryを少し使っています。

パズルの重要な部分は、以前のファイル名を取得することです。この部分を行うPageMethodを作成しました。あなたは、ファイル名を取得する方法については、独自のロジックを実装する必要があります

using System.Web.Services; 

....... 

[WebMethod()] 
public static string GetPreviousFileName() 
{ 
    //put logic here to get the filename to compare against. 
    return "somefilename.ext"; 
} 

:だから私のaspx.csファイルに私はこのように見える機能を持っています。以前のファイル名を処理するための、単純ではあるが柔軟性の低いもう1つのアプローチは、asp:hiddenfieldをページに追加し、ページロード時に前のファイルの名前を入力することです。次に、$('#<%= hiddenField.ClientID %>').val()を読んで比較することができます。

は、次は私が私のファイルアップロードコントロールのために、次のコードを使用し、ブトンを提出:

<asp:ScriptManager ID="sm" runat="server" EnablePageMethods="true" /> 
<div> 
    <asp:FileUpload ID="fu" runat="server" /> 
    <asp:Button ID="btnUpload" runat="server" OnClientClick="return checkDuplicateFile();" Text="Upload File" /> 
</div> 

二つの重要な事は、ここで注意することは:のScriptManagerがEnablePageMethods="true"とASPがあります。ボタンは、指定されたOnClientClick属性を持っています。最後に、ページメソッドから値を取得し、ファイル名を比較ソリューションのjavascriptの部分:ここで起こって物事の

<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    var oFilename = ""; 

    $(function() { 
     //get original file name on page load 
     PageMethods.GetPreviousFileName(function (result) { 
      oFilename = result; 
     }); 
    }); 

    function checkDuplicateFile() { 
     var newVal = $('#<%=fu.ClientID %>').val(); 
     var newValFile = newVal.substr(newVal.lastIndexOf("\\") + 1); 

     //returning true causes postback, returning false stops postback. 
     if (newValFile == oFilename) { return confirm("This image name already exists, do you want to replace it?"); } 
     else return true; 
    } 
</script> 

カップル。私たちは、ページロード時のページメソッド(PageMethods.GetPreviousFileName)から古いファイル名を引き出すために、ページングメソッドを使用します。次に、ボタンonClickイベント(クライアント側)によって呼び出される関数を設定します。 <%=fu.ClientID %>コードスニペットは、JavaScriptアップロード用のファイルアップロードコントロールのクライアントサイドIDを出力します。私は、ファイルパス上の部分文字列を行い、最後の '\'の後のテキストのみを取り戻して比較を行い、ファイル名を抽出します。

私のコメントでは、OnClientclickイベントで呼び出された関数からtrue/falseを返すと、ポストバックが発生するかどうかが決まります。したがって、ユーザーが確認ボックスで[はい]をクリックするとポストバックが発生し、そうでない場合は[いいえ]をクリックしても何も起こりません。

少なくとも正しい方向に向かうことを望みます。

+0

うわー優秀な、ただ一つの質問。ファイルのアップローダーには「ブラウズ」と書かれたボタンが付いています...必要がない場合はどのように操作して非表示にするのですか? – SuperUser555

+0

私はあなたができるとは思っていませんが、ブラウズボタンをクリックできない場合にファイルをアップロードする方法はありますか?ブラウザの多くは、ファイルのアップロードボックスへのコピー/貼り付けを許可していません。 – Peter

0

はあなたの送信ボタン

OnClientClick="return confirm('Are you sure you want to delete this file?')" 

編集に以下のコードを追加します。基本的な仕事をします。

私の質問は、これを編集モードまたは新しいアイテムモードで行っているかどうかです。あなたがチェックしたいページにアイテムを編集したり、新しいアイテムを追加したりしていますか?

+0

問題は、他のものが記入されてから、ずっと遅くまでサブミットボタンが実行されないことです。私はその場でそれを正しくやりたいと思います。 FileUploadにOnChosenイベントや何かがありますか? – SuperUser555

+0

イベントはありますが、これはクライアントサイドのイベントを要求するときのサーバーサイドのイベントです。現在あなたがいると主張するスキルを持つサーバー/クライアント検証を書くことは、範囲外です。私を信じて、簡単なステップでそれを作る。 – eugeneK

+0

提出ボタンこれは何もチェックを実行しません –