我想寫REST Web服務,通過它我們的客戶可以上傳文件,我們的文件服務器上。是否有一個例子或任何有用的鏈接,我可以參考任何指導?ADO.NET數據服務 - 上傳文件
我還沒有看到利用現有的ADO.NET數據服務POST操作的例子很多。
我想寫REST Web服務,通過它我們的客戶可以上傳文件,我們的文件服務器上。是否有一個例子或任何有用的鏈接,我可以參考任何指導?ADO.NET數據服務 - 上傳文件
我還沒有看到利用現有的ADO.NET數據服務POST操作的例子很多。
我不是100%確定如何直接做文件服務器本身,而是ADO.Net數據服務絕對支持類似數據庫的東西。下面的代碼是如何實現將文件放入數據庫的類似目標。不知道有多少,這將有所幫助,但
var myDocumentRepositoryUri = new Uri("uri here");
var dataContext = new FileRepositoryEntities(myDocumentRepositoryUri);
var myFile = new FileItem();
myfile.Filename = "upload.dat";
myFile.Data = new byte[1000]; // or put whatever file data you want to here
dataContext.AddToFileItem(myFile);
dataContext.SaveChanges();
注:該代碼也使用實體框架創建的FileItem(一個數據庫表表示爲對象),並保存這些數據。
雖然我不知道它是否是推薦的方法,我用POST上傳文件到ADO.NET DataService的。我去它的方式是:
在我實現所謂UploadFile服務操作DataService在(使用WebInvoke屬性,使其迎合POST調用):
[WebInvoke]
public void UploadFile()
{
var request = HttpContext.Current.Request;
for (int i = 0; i < request.Files.Count; i++)
{
var file = request.Files[i];
var inputValues = new byte[file.ContentLength];
using (var requestStream = file.InputStream)
{
requestStream.Read(inputValues, 0, file.ContentLength);
}
File.WriteAllBytes(@"c:\temp\" + file.FileName, inputValues);
}
}
然後在客戶端我打電話使用數據服務:
var urlString = "http://localhost/TestDataServicePost/CustomDataService.svc/UploadFile";
var webClient = new WebClient();
webClient.UploadFile(urlString, "POST", @"C:\temp\test.txt");
這將使用Web客戶端上傳哪個地方HttpRequest.Files集合中的文件數據和設置內容類型的文件。如果您更願意發送文件自己(例如,從ASP FileUpload控件)的內容,而不是Web客戶端閱讀使用文件路徑的文件時,您可以使用類似於它在this郵政做的方式的WebRequest。雖然不是使用
FileStream fileStream = new FileStream(uploadfile,
FileMode.Open, FileAccess.Read);
你可以使用
您在傳遞一個字節數組中。我希望這有助於。