mirror of
https://github.com/casdoor/casdoor.git
synced 2025-05-23 10:45:47 +08:00
Add DeleteFile().
This commit is contained in:
parent
495b64995f
commit
518c3f9f69
@ -65,12 +65,31 @@ func (c *ApiController) AddResource() {
|
||||
}
|
||||
|
||||
func (c *ApiController) DeleteResource() {
|
||||
userId, ok := c.RequireSignedIn()
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
var resource object.Resource
|
||||
err := json.Unmarshal(c.Ctx.Input.RequestBody, &resource)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
user := object.GetUser(userId)
|
||||
application := object.GetApplicationByUser(user)
|
||||
provider := application.GetStorageProvider()
|
||||
if provider == nil {
|
||||
c.ResponseError("No storage provider is found")
|
||||
return
|
||||
}
|
||||
|
||||
err = object.DeleteFile(provider, resource.ObjectKey)
|
||||
if err != nil {
|
||||
c.ResponseError(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
c.Data["json"] = wrapActionResponse(object.DeleteResource(&resource))
|
||||
c.ServeJSON()
|
||||
}
|
||||
@ -108,20 +127,21 @@ func (c *ApiController) UploadResource() {
|
||||
return
|
||||
}
|
||||
|
||||
fileType := "unknown"
|
||||
contentType := header.Header.Get("Content-Type")
|
||||
if strings.HasPrefix(contentType, "image/") {
|
||||
fileType = "image"
|
||||
} else if strings.HasPrefix(contentType, "video/") {
|
||||
fileType = "video"
|
||||
}
|
||||
|
||||
fileUrl, objectKey, err := object.UploadFile(provider, fullFilePath, fileBuffer)
|
||||
if err != nil {
|
||||
c.ResponseError(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
fileType := "unknown"
|
||||
fileFormat := filepath.Ext(fullFilePath)
|
||||
if strings.Contains(".png|.jpg|.bmp", fileFormat) {
|
||||
fileType = "image"
|
||||
} else if strings.Contains(".mp4|.avi", fileFormat) {
|
||||
fileType = "video"
|
||||
}
|
||||
|
||||
fileSize := int(header.Size)
|
||||
resource := &object.Resource{
|
||||
Owner: owner,
|
||||
|
@ -55,3 +55,17 @@ func UploadFile(provider *Provider, fullFilePath string, fileBuffer *bytes.Buffe
|
||||
fileUrl := fmt.Sprintf("%s?time=%s", util.UrlJoin(host, objectKey), util.GetCurrentUnixTime())
|
||||
return fileUrl, objectKey, nil
|
||||
}
|
||||
|
||||
func DeleteFile(provider *Provider, objectKey string) error {
|
||||
storageProvider := storage.GetStorageProvider(provider.Type, provider.ClientId, provider.ClientSecret, provider.RegionId, provider.Bucket, provider.Endpoint)
|
||||
if storageProvider == nil {
|
||||
return fmt.Errorf("the provider type: %s is not supported", provider.Type)
|
||||
}
|
||||
|
||||
if provider.Domain == "" {
|
||||
provider.Domain = storageProvider.GetEndpoint()
|
||||
UpdateProvider(provider.GetId(), provider)
|
||||
}
|
||||
|
||||
return storageProvider.Delete(objectKey)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user