2012-02-22 14 views
1

私はASP .NET Webサイトを作成しています。とりわけ、ユーザーは画像をアップロードでき、その画像はサーバーに保存する必要があります。Webサービスを使用して、ユーザーが選択したイメージをサーバーにアップロードできますか?

私はウェブサイト全体で、可能な限りクライアントとサーバーの間の最小限の通信を達成しようとしています。つまり、onload()では、そのページに必要なすべてのデータを返すWebサービスを呼び出し、JavaScriptを使用してそれらを操作します。

これまでのところ、完璧に動作しています。この問題は、ユーザーが自分のプロフィールを変更したいときに発生します。私は、テキストフィールドとソートに入力されたすべての情報を受け取り、それらを引数としてデータベースに保存するWebサービスに渡すことができます。私がやり方を知っていないこと、またはそれが可能であっても、選択されたイメージをWebサービスへの引数として渡すことです。私はHTML5を使用しています

:画像選択

+0

「Ajaxを使用してファイルをアップロードするにはどうすればよいですか?」 – Quentin

+0

''はHTML5で導入されていませんでした;) – MMM

+0

「ウェブサービスにファイルをアップロードするにはどうすればよいですか?短い答えはおそらく "iframeを使用する"ですが、使用しているWebサービスに依存していると思います。 – Dave

答えて

1

、その後はiframeに反応することができます。

protected void UploadButton_Click(object sender, EventArgs e) { 
    if (!ImageUpload.HasFile) { 
     return; 
    } 

    string imageBase64 = System.Convert.ToBase64String(ImageUpload.FileBytes); 

    YourService service = new YourService(); 

    service.UploadImage(imageBase64); 

これは、文字列をパラメータとして受け取るUploadImageというメソッドがサービスにあることを前提としています。バックエンドのその後

、文字列をバイト配列に変換:

byte[] imageArray = System.Convert.FromBase64String(base64ImageData); 

し、データベースへのバイナリデータとして保存します。

警告として、誰かが大きすぎる画像をアップロードしないように、ウェブページの長さチェックを追加することもできます。そうしないと、サーバーが停止する可能性があります。

0

あなたがHTML formularを使用する必要がありますため<input type="file">。しかし、あなたはform -tag

<form action="url" method="post" enctype="multipart/form-data"> 
    <input type="file" name="my-file" /> 
</form> 

のデフォルトの設定の一部を変更する必要があり、ページがリロードされませんよりも、あなたは、フォームのターゲットとしてはiframeを使用することができます。ユーザーがクリックを使用すると、ページのコードビハインドで次のような何かを行うことができ提出するときに、代わりにasp:FileUploadコントロールを使用している場合、あなたは...

<form ... target="youriframe"> 

see this website for a full example

関連する問題