翻譯|使用教程|編輯:黃竹雯|2019-01-18 13:59:59.000|閱讀 295 次
概述:本文為你介紹在Dynamic Web TWAIN中如何將圖像上傳到Web服務器。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
上一篇文章教大家如何將圖片上傳到服務器,本篇文章將繼續(xù)與大家分享如何將圖像上傳到FTP和數(shù)據(jù)庫。
HTTP上傳方法向服務器上的操作頁面發(fā)出標準HTTP發(fā)布請求。請求包含圖像數(shù)據(jù),圖像名稱等。在操作頁面中,你可以根據(jù)需要處理圖像數(shù)據(jù)。從技術(shù)上講,你可以使用任何服務器端語言(例如C#,VB,PHP,Java)編寫操作頁面。
這是C#中的一個例子:
此操作頁面從當前HTTP請求對象中檢索圖像數(shù)據(jù),并將其作為本地文件保存在服務器上。
HttpFileCollection files = HttpContext.Current.Request.Files; HttpPostedFile uploadfile = files["RemoteFile"]; uploadfile.SaveAs(System.Web.HttpContext.Current.Request.MapPath(".") + "/" + uploadfile.FileName);
請注意,RemoteFile是上傳圖像數(shù)據(jù)的默認名稱/密鑰。如有必要,可以使用屬性HttpFieldNameOfUploadedImage更改它。
在PHP中:
$fileTempName = $_FILES['RemoteFile']['tmp_name']; $fileSize = $_FILES['RemoteFile']['size']; $fileName = $_FILES['RemoteFile']['name']; move_uploaded_file($fileTempName, $fileName) ;
除了HTTP上傳方法,你還可以使用FTP上傳方法將圖像更新到FTP Web服務器。可用的API是:
格式 | 方法 |
任何類型 | |
支持的圖像 | |
多頁PDF | |
多頁TIFF |
代碼片段
DWObject.FTPUserName = 'test'; DWObject.FTPPort = 21; DWObject.FTPPassword = 'test'; DWObject.FTPUploadAllAsPDF( '192.168.8.222', 'test.pdf', OnFtpUploadSuccess, OnFtpUploadFailure );
Dynamic Web TWAIN不會直接將圖像保存/上傳到數(shù)據(jù)庫。相反,圖像數(shù)據(jù)首先保存在操作頁面,然后操作頁面中的代碼決定存儲它的位置。
如果你不確定如何將圖像數(shù)據(jù)上傳到服務器,請參閱上一篇文章“服務器磁盤上的上傳和保存”。
不同的數(shù)據(jù)庫系統(tǒng)可能具有不同的圖像數(shù)據(jù)數(shù)據(jù)類型。我們一般在MSSQL Server中使用BLOB或varbinary,在Oracle中使用Long raw或BLOB,在MySQL中使用BLOB。
以下是在MSSQL Server中使用C+的示例:
int iFileLength; HttpFileCollection files = HttpContext.Current.Request.Files; HttpPostedFile uploadfile = files["RemoteFile"]; String strImageName = uploadfile.FileName; iFileLength = uploadfile.ContentLength; Byte[] inputBuffer = new Byte[iFileLength]; System.IO.Stream inputStream; inputStream = uploadfile.InputStream; inputStream.Read(inputBuffer,0,iFileLength); // add code to connect to database String SqlCmdText = "INSERT INTO tblImage (strImageName,imgImageData) VALUES (@ImageName,@Image)"; System.Data.SqlClient.SqlCommand sqlCmdObj = new System.Data.SqlClient.SqlCommand(SqlCmdText, sqlConnection); sqlCmdObj.Parameters.Add("@Image",System.Data.SqlDbType.Binary,iFileLength).Value = inputBuffer; sqlCmdObj.Parameters.Add("@ImageName",System.Data.SqlDbType.VarChar,255).Value = strImageName; sqlConnection.Open(); sqlCmdObj.ExecuteNonQuery(); sqlConnection.Close();
在此代碼片段中,我們從當前HTTP請求獲取文件對象,并將圖像數(shù)據(jù)寫入字節(jié)數(shù)組。在SQL語句中,我們將字節(jié)數(shù)組作為System.Data.SqlDbType.Binary傳遞給數(shù)據(jù)庫,并將數(shù)據(jù)存儲在imgImageData的BL字段中。
有時我們需要將更多信息傳遞給服務器。例如,文檔類型,員工ID,文檔描述等。由于在HTTP上傳方法中沒有傳遞附件數(shù)據(jù)的方法,因此我們需要使用名為SetHTTPFormField的方法。
SetHTTPFormField(String sFieldName, String sFieldValue)
我們需要在上傳之前就使用此方法。例如:
DWObject.ClearAllHTTPFormField(); // Clear all fields first DWObject.SetHTTPFormField("EmployeeID", "2012000054"); DWObject.SetHTTPFormField("DocumentType", "Invoice"); DWObject.SetHTTPFormField("DocumentDesc", "This is an invoice from ...");
在操作頁面中,你可以通過字段名稱從請求對象中檢索數(shù)據(jù)。例如:
String EmployeeID = HttpContext.Current.Request.Form["EmployeeID"];
關(guān)于如何使用Dynamic Web TWAIN將圖像上傳到Web服務器的教程到此結(jié)束,下一篇將與大家分享如何從網(wǎng)上下載圖片,敬請期待~
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn