文件操作Files
1.創(chuàng)建一個Parse.File
Parse.File讓您可將應(yīng)用程序文件存儲在云中扣墩,否則對一般的Parse.Object來說會太大或太繁瑣。最常見的用例是存儲圖像对蒲,但也可以將其用于文檔、視頻毛雇、音樂和任何其他二進(jìn)制數(shù)據(jù)(最多10M)莫其。
使用Parse.File很簡單。有幾種方法來創(chuàng)建文件粗截。第一個是使用base64編碼的String。
var base64 = "V29ya2luZyBhdCBQYXJzZSBpcyBncmVhdCE=";
var file = new Parse.File("myfile.txt", { base64: base64 });
或者捣炬,您可以從字節(jié)數(shù)組創(chuàng)建一個文件:
var bytes = [ 0xBE, 0xEF, 0xCA, 0xFE ];
var file = new Parse.File("myfile.txt", bytes);
Parse將根據(jù)文件擴(kuò)展名自動檢測您上傳的文件類型熊昌,但也可以在第三個參數(shù)中指定Content-Type:
var file = new Parse.File("myfile.zzz", fileData, "image/png");
但是在HTML5應(yīng)用中最常見的,是使用帶有文件上傳控件的html表單湿酸。在現(xiàn)代瀏覽器上婿屹,這很簡單。創(chuàng)建一個文件輸入標(biāo)簽推溃,允許用戶從本地驅(qū)動器中選擇一個文件進(jìn)行上傳:
<input type="file" id="profilePhotoFileUpload">
然后昂利,在點(diǎn)擊處理程序或其他函數(shù)中,獲取對該文件的引用:
var fileUploadControl = $("#profilePhotoFileUpload")[0];
if (fileUploadControl.files.length > 0) {
var file = fileUploadControl.files[0];
var name = "photo.jpg";
var parseFile = new Parse.File(name, file);
}
請注意铁坎,在這個例子中蜂奸,我們給文件命名為photo.jpg。這里需要注意兩點(diǎn):
- 您不需要擔(dān)心文件名沖突硬萍。每次上傳都會獲得唯一的標(biāo)識符扩所,因此上傳多個名為photo.jpg的文件沒有任何問題。
- 您必須在文件命名時指定一個文件擴(kuò)展名朴乖。這使得Parse可以根據(jù)文件類型做相應(yīng)的處理祖屏。因此助赞,如果您正在存儲PNG圖像,請確保您的文件名以.png為后綴袁勺。
接下來雹食,您將把文件保存到云端。與Parse.Object一樣期丰,您可以使用save方法的許多變體群叶,具體取決于什么樣的回調(diào)和錯誤處理適合您。
parseFile.save().then(function() {
// The file has been saved to Parse.
}, function(error) {
// The file either could not be read, or could not be saved to Parse.
});
最后咐汞,保存完成后盖呼,可以把Parse.File關(guān)聯(lián)到一個Parse.Object,就像關(guān)聯(lián)任何數(shù)據(jù)塊一樣:
var jobApplication = new Parse.Object("JobApplication");
jobApplication.set("applicantName", "Joe Smith");
jobApplication.set("applicantResumeFile", parseFile);
jobApplication.save();
2.檢索文件內(nèi)容
如何最優(yōu)地檢索文件內(nèi)容取決于您應(yīng)用程序的上下文化撕。由于跨域請求問題几晤,最好是讓瀏覽器為您完成此工作。通常植阴,這意味著將文件的URL渲染到DOM中蟹瘾。在這里,我們使用jQuery在頁面上渲染上傳的個人資料照片:
var profilePhoto = profile.get("photoFile");
$("profileImg")[0].src = profilePhoto.url();
如果要在Cloud Code中處理文件數(shù)據(jù)掠手,可以使用我們的http網(wǎng)絡(luò)庫檢索文件:
Parse.Cloud.httpRequest({ url: profilePhoto.url() }).then(function(response) {
// The file contents are in response.buffer.
});
您可以使用REST API刪除對象引用的文件憾朴。您需要提供主密鑰才能允許刪除文件。
如果您應(yīng)用程序中的任何對象都未引用您的文件喷鸽,則無法通過REST API刪除它們众雷。您可以在應(yīng)用的“設(shè)置”頁面中請求清除未使用的文件。請記住做祝,這樣做可能會對那些依賴于通過其URL屬性訪問未被引用的文件的功能造成破壞砾省。但是當(dāng)前已經(jīng)與對象關(guān)聯(lián)的文件不會受到影響。