對於Web瀏覽器(例如Chrome,IE或Firefox),當您選擇使用文件「選擇文件」按鈕,哪裏該文件的數據獲取存儲?瀏覽器的數據存儲位置的按鈕
文件名顯示在瀏覽器,但確實該文件的數據隨時隨地存儲或只是把某個文件鏈接,如在瀏覽器中或臨時文件?
爲了澄清:我想知道該文件的數據得到真實存儲前提交。只要從客戶端的PC中選擇文件後,沒有其他任何事情完成。
對於Web瀏覽器(例如Chrome,IE或Firefox),當您選擇使用文件「選擇文件」按鈕,哪裏該文件的數據獲取存儲?瀏覽器的數據存儲位置的按鈕
文件名顯示在瀏覽器,但確實該文件的數據隨時隨地存儲或只是把某個文件鏈接,如在瀏覽器中或臨時文件?
爲了澄清:我想知道該文件的數據得到真實存儲前提交。只要從客戶端的PC中選擇文件後,沒有其他任何事情完成。
選擇文件後。我相信客戶端(瀏覽器)只是在用戶計算機上存儲對文件位置的引用。它需要js和html的組合將文件發佈到服務器。通過多/表單數據文章。
在這種情況下,在服務器上,您可能必須將文件存儲到您選擇的臨時位置,直到您能夠處理它(即轉換和/或存儲到數據存儲區)。
在新的瀏覽器可以使用FORMDATA對象和XHR張貼到這是很多清潔服務器。 此FormData對象用於構造形成xhr請求的數據有效載荷的鍵/值對。
// Create a new FormData object.
var formData = new FormData();
在這種情況下,一旦文件的字節被髮布到服務器,你可以做你想要的數據什麼的。通常我會將它作爲blob存儲在數據庫中。
這種方法可以讓你把它全部在內存中。人們試圖存儲在服務器文件系統上的錯誤。但是,在一些多部分表單文章中,您可能必須這樣做。
使用XHR時,這裏是我的一些網頁API上傳的代碼。 我也使用iframe調用此API路由(唉!)以支持IE8及更早版本。 POS瀏覽器!
/// <summary>
/// Upload the facility logo.
/// </summary>
/// <returns></returns>
[HttpPost]
[Route("logo")]
public HttpResponseMessage Logo()
{
int newImageId = -1;
var uploadedFiles = HttpContext.Current.Request.Files;
if (uploadedFiles.Count > 0)
{
var file = uploadedFiles[0];
if (!file.IsImage())
{
// "The uploaded file must be a .jpg, .jpeg, or .png"
return
Request.CreateResponse(HttpStatusCode.UnsupportedMediaType,
"unsupported");
}
var facilityRepository = new FacilityRepository();
var logoBytes =
StreamCopier.StreamToByteArray(file.InputStream, file.ContentLength);
newImageId = facilityRepository.InsertLogoImage(logoBytes);
}
return Request.CreateResponse(HttpStatusCode.OK,
newImageId);
}
在寫入您在服務器上指定的文件之前,它會保存臨時文件(在內存中)。臨時文件然後被刪除。 –
嗨黑曜石年齡,你是說當我在我的電腦上運行的瀏覽器中選擇一個文件,該文件的副本存儲在我的電腦上的內存? –
它被存儲在**服務器**中的臨時存儲器中。如果您通過本地主機運行站點,那麼是的,該文件將存儲在您的計算機內存中。否則它將被存儲在服務器盒的內存中。 –