2

プロジェクトでこのAjax ファイルのアップロードを使用していますが、正常に動作しています。唯一の問題は、アップロードしたばかりの写真のパスを保存する方法です。基本的に、アップロードが成功した後に TextBox コントロールへのパスをコピーし、そのテキスト ボックスを updatepanel で囲み、Ajax の SaveAs メソッドを呼び出した後にそのパネルを手動で更新しようとしましたが、うまくいかないようです。

これは、uploadedComplete イベントのコードです。

protected void AsyncFileUpload1_UploadedComplete (object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
    {
        System.Threading.Thread.Sleep(3000);
        if (AsyncFileUpload1.HasFile)
        {
            var relativeFolder = DateTime.Now.Year.ToString(CultureInfo.InvariantCulture) + Path.DirectorySeparatorChar + DateTime.Now.Month +
                             Path.DirectorySeparatorChar;
            relativeFolder = relativeFolder.Replace('\\', '/');
            var folder = Utils.RelativeWebRoot + "PostPhotos/" + relativeFolder;
            var fileName = Path.GetFileName(e.FileName);

            AsyncFileUpload1.SaveAs(Server.MapPath(folder + fileName));

            txtPostPhoto.Text = folder + fileName;
            PostImage.ImageUrl = txtPostPhoto.Text;

            PostPhotoUpdatePanel.Update();
        }
    }

txtPostPhoto は私のテキスト ボックスです。

PostImage は、画像プレビューを表示しようとしている場所です。

これを行う別の方法はありますか?

4

3 に答える 3

1

リンクの例を注意深く見てください。

AJAX コントロールの次のプロパティを使用します。

OnClientUploadComplete="uploadComplete"

これは、ファイルが正常にアップロードされたときにサーバー側で起動される JavaScript 関数です。この関数でテキストボックスの値を設定できます。

例:

function uploadComplete(sender, args) {
    var txt= document.getElementById("ctl00_SampleContent_clientSide");//Your textbox id
    txt.value=args.get_fileName();
} 
于 2012-07-12T07:06:13.633 に答える
0

ViewState にフォトパスを保存してみてください

protected void AsyncFileUpload1_UploadedComplete (object sender, AjaxControlToolkit.AsyncFileUploadEventArgs e)
{
     ViewState["path"] = "your path"
     Page.ClientScript.RegisterHiddenField("vpath", ViewState("path"))
}

クライアント側でスクリプトタグを配置し、

<script type="text/javascript" >
    var vCode = document.getElementById("vpath");
</script>
于 2012-07-14T14:55:00.487 に答える
0

パスをデータベースに保存する必要があります。名前で保存するのではなく、GUID を作成し、GUID を名前として使用して保存する必要があります。

なんで?

  1. 2 つのイメージが同じ名前で、1 つが明らかに上書きされるシナリオを考えてみましょう。このような場合、GUID を使用すると役立ちます。
  2. データベースに保存すると、画像が不要になった場合に後で画像を特定または削除するのに役立ちます。
于 2012-07-12T05:36:19.607 に答える