通过云代码删除解析文件

时间:2015-06-30 19:09:48

标签: javascript parse-platform

我有一个图像作为一个类中的列。我需要通过查询该行来删除特定行的图像。但在查询如何删除该图像后

我可以通过以下方式获取图片网址:

var image = results[i].get("imageFile").url();

我们可以通过获取网址来删除图片,还是有其他方式?

3 个答案:

答案 0 :(得分:5)

目前仅支持通过REST API删除文件。您可以尝试使用Parse.Cloud.httpRequest发出删除文件命令。

您可以尝试这样做:

var image = result.get("imageFile").url();    
Parse.Cloud.httpRequest({
        method: 'DELETE',
        url: image.substring(image.lastIndexOf("/")+1),
        headers: {
            "X-Parse-Application-Id": "YOUR_APP_ID
            "X-Parse-REST-API-Key" : YOUR_API_KEY"
        }
    );

但请不要忘记获取yourURL =只是文件的名称。

这就是你需要做的原因

image.substring(image.lastIndexOf("/")+1),

例如,你的URL不应该是http://files.parsetfss.com/19728287-9868-4728-8e49-31472daf0211/tfss-65ff02e3-3d11-45a8-ba25-4955f6c7f677-143569529.jpg

但是tfss-65ff02e3-3d10-45a8-ba25-4955f6c7f677-1435695290.jpg

答案 1 :(得分:0)

几年后,我偶然遇到了这个问题,因为此SO页是与ParseServer-> S3-Adapter github存储库上的已解决问题链接的。

上面和文档中的信息有些混乱。文档中写的是该URL必须为:

https://YOUR.PARSE-SERVER.HERE/parse/files/...profile.png

这是正确的,但仅在某种意义上说,您需要提供Parse Server的路径,“文件”目录以及文件名本身。如果您在同一台Parse Server上运行多个应用程序(就像我这样),这会有些棘手。

鉴于此建议已不再在Parse自己的服务器上运行,上述建议-并被标记为正确-错误或不再准确(四年后)。

仅传递文件名将不起作用。您需要输入有效的网址-例如

http://localhost:8000/APP-NAME/files/FILE-NAME

与文档不同,您不需要/parse/。代替/parse/的是应用程序的名称。

最适合我的是:

// note: endpoint is defined outside of this function
// the endpoint is the app/server url - e.g.
// http://localhost:8000/some_parse_app_name

Parse.Cloud.define('deleteFile', (request) => {

  let encodedFileName = encodeURI(request.params.fileName)

  Parse.Cloud.httpRequest({
    headers: {
      'X-Parse-Application-Id': appId,
      'X-Parse-Master-Key': masterKey
    },
    method: 'DELETE',
    url: `${endpoint}/files/${encodedFileName}`,
  }).then(function (httpResponse) {
    // success
    console.log('Request succeeded: ' + httpResponse.text)
  }, function (httpResponse) {
    // error
    console.error('Request failed with response code ' + httpResponse.status)
  })
})

答案 2 :(得分:0)

在解析时删除文件有两个选项。 1.云代码 2. Rest API

作为替代,您可以删除没有云代码的文件。只是使用JavaScript XMLHttpRequest调用api

    const remove = async function(URL) {
      const httpRequest = await fetch(URL, {
        method: 'DELETE',
        headers: {
          'X-Parse-Application-Id': appId,
          'X-Parse-REST-API-Key': resKey,
          'X-Parse-Master-Key': masterKey
        }
      });
      const response = await httpRequest;
      return response
    }