2012-02-22 50 views
1

我正在做一個ASP .NET網站,其中用戶可以上傳圖片,需要保存到服務器。我可以使用網絡服務將用戶選擇的圖像上傳到服務器嗎?

在整個網站,我試圖儘可能最小的客戶端和服務器之間的溝通。這意味着onload()我調用Web服務,返回該頁面所需的所有數據,然後使用JavaScript處理它們。

到目前爲止,它工作得非常完美。當用戶希望對其個人資料進行更改時會出現問題。我可以將所有在文本字段中輸入的信息和排序信息,並將它們作爲參數傳遞給將其保存到數據庫的web服務。我不知道該怎麼做,或者甚至有可能將所選圖像作爲參數傳遞給webservice。

我使用HTML5:<input type="file">選擇映像

+0

是你的問題「如何使用Ajax上傳文件?」? – Quentin 2012-02-22 15:51:56

+0

''沒有在HTML5中引入,只是說;) – MMM 2012-02-22 15:52:55

+0

我認爲問題是「如何使用ajax將文件上傳到Web服務」?簡單的答案可能是「使用iframe」,儘管它取決於正在使用的Web服務,我想。 – Dave 2012-02-22 16:54:55

回答

1

,當用戶點擊提交,你可以做類似的頁面的代碼隱藏在下面的內容:

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的表現公式。但是,你需要改變一些form -tag

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

默認配置的,你可以使用一個iframe作爲形式的目標,比頁面不會重新加載。如果您使用asp:FileUpload控制,而不是您可以在IFRAME隨即反應過來......

<form ... target="youriframe"> 

see this website for a full example

相關問題