解析服务器 - 如何使用云代码从服务器中删除图像文件
Parse Server - How to delete image file from the server using cloud code
如何使用 Parse Cloud Code 从服务器中删除图像文件。我正在使用 back4app.com
删除图像行后
我正在获取图像 urls,然后使用它的 url
调用一个函数来删除图像
Parse.Cloud.afterDelete("Image", function(request) {
// get urls
var imageUrl = request.object.get("image").url();
var thumbUrl = request.object.get("thumb").url();
if(imageUrl!=null){
//delete
deleteFile(imageUrl);
}
if(thumbUrl!=null){
//delete
deleteFile(thumbUrl);
}
});
从服务器删除图片文件
function deleteFile(url){
Parse.Cloud.httpRequest({
url: url.substring(url.lastIndexOf("/")+1),
method: 'DELETE',
headers: {
'X-Parse-Application-Id': 'xxx',
'X-Parse-Master-Key': 'xxx'
}
}).then(function(httpResponse) {
console.log(httpResponse.text);
}, function(httpResponse) {
console.error('Request failed with response code ' + httpResponse.status);
});
}
出于安全原因,无法使用 SDK 或 REST API 中的 DELETE 直接从 Back4App 中删除图像。我相信您可以按照以下指南操作:
https://help.back4app.com/hc/en-us/articles/360002327652-How-to-delete-files-completely-
经过一段时间的努力,似乎可以通过提到的云功能实现 here。 1个需要在云代码中使用MasterKey:
Parse.Cloud.define('deleteGalleryPicture', async (request) => {
const {image_id} = request.params;
const Gallery = Parse.Object.extend('Gallery');
const query = new Parse.Query(Gallery);
try {
const Image = await query.get(image_id);
const picture = Image.get('picture');
await picture.destroy({useMasterKey: true});
await Image.destroy();
return 'Image removed.';
} catch (error) {
console.log(error);
throw new Error('Error deleting image');
}
});
我一开始感到困惑,因为即使我删除了仪表板中的引用对象,我仍然可以打开该文件的 link,但后来我发现仪表板没有调用 Parse.Cloud.beforeDelete()
由于某种原因触发。
通过云代码功能删除文件后,尝试从url下载数据returns 0kB数据,因此确认它们已被删除。
如何使用 Parse Cloud Code 从服务器中删除图像文件。我正在使用 back4app.com
删除图像行后
我正在获取图像 urls,然后使用它的 url
调用一个函数来删除图像Parse.Cloud.afterDelete("Image", function(request) {
// get urls
var imageUrl = request.object.get("image").url();
var thumbUrl = request.object.get("thumb").url();
if(imageUrl!=null){
//delete
deleteFile(imageUrl);
}
if(thumbUrl!=null){
//delete
deleteFile(thumbUrl);
}
});
从服务器删除图片文件
function deleteFile(url){
Parse.Cloud.httpRequest({
url: url.substring(url.lastIndexOf("/")+1),
method: 'DELETE',
headers: {
'X-Parse-Application-Id': 'xxx',
'X-Parse-Master-Key': 'xxx'
}
}).then(function(httpResponse) {
console.log(httpResponse.text);
}, function(httpResponse) {
console.error('Request failed with response code ' + httpResponse.status);
});
}
出于安全原因,无法使用 SDK 或 REST API 中的 DELETE 直接从 Back4App 中删除图像。我相信您可以按照以下指南操作:
https://help.back4app.com/hc/en-us/articles/360002327652-How-to-delete-files-completely-
经过一段时间的努力,似乎可以通过提到的云功能实现 here。 1个需要在云代码中使用MasterKey:
Parse.Cloud.define('deleteGalleryPicture', async (request) => {
const {image_id} = request.params;
const Gallery = Parse.Object.extend('Gallery');
const query = new Parse.Query(Gallery);
try {
const Image = await query.get(image_id);
const picture = Image.get('picture');
await picture.destroy({useMasterKey: true});
await Image.destroy();
return 'Image removed.';
} catch (error) {
console.log(error);
throw new Error('Error deleting image');
}
});
我一开始感到困惑,因为即使我删除了仪表板中的引用对象,我仍然可以打开该文件的 link,但后来我发现仪表板没有调用 Parse.Cloud.beforeDelete()
由于某种原因触发。
通过云代码功能删除文件后,尝试从url下载数据returns 0kB数据,因此确认它们已被删除。