mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-02 18:26:27 +13:00
Add option to remove file extensions on Amazon S3 uploads
This commit is contained in:
parent
a4849a7c10
commit
051870383b
4 changed files with 76 additions and 8 deletions
|
@ -118,16 +118,25 @@ public override UploadResult Upload(Stream stream, string fileName)
|
|||
string credential = URLHelpers.CombineURL(Settings.AccessKeyID, scope);
|
||||
string timeStamp = DateTime.UtcNow.ToString("yyyyMMddTHHmmssZ", CultureInfo.InvariantCulture);
|
||||
string contentType = Helpers.GetMimeType(fileName);
|
||||
string uploadPath = GetUploadPath(fileName);
|
||||
string hashedPayload = "UNSIGNED-PAYLOAD";
|
||||
|
||||
NameValueCollection headers = new NameValueCollection();
|
||||
headers["Host"] = host;
|
||||
headers["Content-Length"] = stream.Length.ToString();
|
||||
headers["Content-Type"] = contentType;
|
||||
headers["x-amz-date"] = timeStamp;
|
||||
headers["x-amz-content-sha256"] = hashedPayload;
|
||||
headers["x-amz-storage-class"] = Settings.StorageClass.ToString();
|
||||
if ((Settings.RemoveExtensionImage && Helpers.IsImageFile(fileName)) ||
|
||||
(Settings.RemoveExtensionText && Helpers.IsTextFile(fileName)) ||
|
||||
(Settings.RemoveExtensionVideo && Helpers.IsVideoFile(fileName)))
|
||||
{
|
||||
fileName = Path.GetFileNameWithoutExtension(fileName);
|
||||
}
|
||||
string uploadPath = GetUploadPath(fileName);
|
||||
|
||||
NameValueCollection headers = new NameValueCollection
|
||||
{
|
||||
["Host"] = host,
|
||||
["Content-Length"] = stream.Length.ToString(),
|
||||
["Content-Type"] = contentType,
|
||||
["x-amz-date"] = timeStamp,
|
||||
["x-amz-content-sha256"] = hashedPayload,
|
||||
["x-amz-storage-class"] = Settings.StorageClass.ToString()
|
||||
};
|
||||
if (Settings.SetPublicACL) headers["x-amz-acl"] = "public-read";
|
||||
|
||||
string canonicalURI = uploadPath;
|
||||
|
|
|
@ -38,5 +38,8 @@ public class AmazonS3Settings
|
|||
public string CustomDomain { get; set; }
|
||||
public bool SetPublicACL { get; set; } = true;
|
||||
public AmazonS3StorageClass StorageClass { get; set; }
|
||||
public bool RemoveExtensionImage { get; set; } = false;
|
||||
public bool RemoveExtensionVideo { get; set; } = false;
|
||||
public bool RemoveExtensionText { get; set; } = false;
|
||||
}
|
||||
}
|
|
@ -625,6 +625,10 @@ private void InitializeComponent()
|
|||
this.lblWidthHint = new System.Windows.Forms.Label();
|
||||
this.ttlvMain = new ShareX.HelpersLib.TabToListView();
|
||||
this.actRapidShareAccountType = new ShareX.UploadersLib.AccountTypeControl();
|
||||
this.cbAmazonS3StripExtensionImage = new System.Windows.Forms.CheckBox();
|
||||
this.cbAmazonS3StripExtensionVideo = new System.Windows.Forms.CheckBox();
|
||||
this.cbAmazonS3StripExtensionText = new System.Windows.Forms.CheckBox();
|
||||
this.lblAmazonS3StripExtension = new System.Windows.Forms.Label();
|
||||
this.tpOtherUploaders.SuspendLayout();
|
||||
this.tcOtherUploaders.SuspendLayout();
|
||||
this.tpTwitter.SuspendLayout();
|
||||
|
@ -2560,8 +2564,12 @@ private void InitializeComponent()
|
|||
//
|
||||
// gbAmazonS3Advanced
|
||||
//
|
||||
this.gbAmazonS3Advanced.Controls.Add(this.lblAmazonS3StripExtension);
|
||||
this.gbAmazonS3Advanced.Controls.Add(this.cbAmazonS3StripExtensionText);
|
||||
this.gbAmazonS3Advanced.Controls.Add(this.cbAmazonS3StorageClass);
|
||||
this.gbAmazonS3Advanced.Controls.Add(this.cbAmazonS3StripExtensionVideo);
|
||||
this.gbAmazonS3Advanced.Controls.Add(this.cbAmazonS3PublicACL);
|
||||
this.gbAmazonS3Advanced.Controls.Add(this.cbAmazonS3StripExtensionImage);
|
||||
this.gbAmazonS3Advanced.Controls.Add(this.cbAmazonS3UsePathStyle);
|
||||
this.gbAmazonS3Advanced.Controls.Add(this.btnAmazonS3StorageClassHelp);
|
||||
this.gbAmazonS3Advanced.Controls.Add(this.lblAmazonS3StorageClass);
|
||||
|
@ -5092,6 +5100,32 @@ private void InitializeComponent()
|
|||
this.actRapidShareAccountType.Name = "actRapidShareAccountType";
|
||||
this.actRapidShareAccountType.SelectedAccountType = ShareX.UploadersLib.AccountType.Anonymous;
|
||||
//
|
||||
// cbAmazonS3StripExtensionImage
|
||||
//
|
||||
resources.ApplyResources(this.cbAmazonS3StripExtensionImage, "cbAmazonS3StripExtensionImage");
|
||||
this.cbAmazonS3StripExtensionImage.Name = "cbAmazonS3StripExtensionImage";
|
||||
this.cbAmazonS3StripExtensionImage.UseVisualStyleBackColor = true;
|
||||
this.cbAmazonS3StripExtensionImage.CheckedChanged += new System.EventHandler(this.cbAmazonS3StripExtensionImage_CheckedChanged);
|
||||
//
|
||||
// cbAmazonS3StripExtensionVideo
|
||||
//
|
||||
resources.ApplyResources(this.cbAmazonS3StripExtensionVideo, "cbAmazonS3StripExtensionVideo");
|
||||
this.cbAmazonS3StripExtensionVideo.Name = "cbAmazonS3StripExtensionVideo";
|
||||
this.cbAmazonS3StripExtensionVideo.UseVisualStyleBackColor = true;
|
||||
this.cbAmazonS3StripExtensionVideo.CheckedChanged += new System.EventHandler(this.cbAmazonS3StripExtensionVideo_CheckedChanged);
|
||||
//
|
||||
// cbAmazonS3StripExtensionText
|
||||
//
|
||||
resources.ApplyResources(this.cbAmazonS3StripExtensionText, "cbAmazonS3StripExtensionText");
|
||||
this.cbAmazonS3StripExtensionText.Name = "cbAmazonS3StripExtensionText";
|
||||
this.cbAmazonS3StripExtensionText.UseVisualStyleBackColor = true;
|
||||
this.cbAmazonS3StripExtensionText.CheckedChanged += new System.EventHandler(this.cbAmazonS3StripExtensionText_CheckedChanged);
|
||||
//
|
||||
// lblAmazonS3StripExtension
|
||||
//
|
||||
resources.ApplyResources(this.lblAmazonS3StripExtension, "lblAmazonS3StripExtension");
|
||||
this.lblAmazonS3StripExtension.Name = "lblAmazonS3StripExtension";
|
||||
//
|
||||
// UploadersConfigForm
|
||||
//
|
||||
resources.ApplyResources(this, "$this");
|
||||
|
@ -5862,5 +5896,9 @@ private void InitializeComponent()
|
|||
private System.Windows.Forms.Label lblLithiioEmail;
|
||||
private System.Windows.Forms.CheckBox cbAmazonS3PublicACL;
|
||||
private System.Windows.Forms.GroupBox gbAmazonS3Advanced;
|
||||
private System.Windows.Forms.Label lblAmazonS3StripExtension;
|
||||
private System.Windows.Forms.CheckBox cbAmazonS3StripExtensionText;
|
||||
private System.Windows.Forms.CheckBox cbAmazonS3StripExtensionVideo;
|
||||
private System.Windows.Forms.CheckBox cbAmazonS3StripExtensionImage;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -588,6 +588,9 @@ public void LoadSettings()
|
|||
cbAmazonS3StorageClass.Items.AddRange(Helpers.GetLocalizedEnumDescriptions<AmazonS3StorageClass>());
|
||||
cbAmazonS3StorageClass.SelectedIndex = (int)Config.AmazonS3Settings.StorageClass;
|
||||
cbAmazonS3PublicACL.Checked = Config.AmazonS3Settings.SetPublicACL;
|
||||
cbAmazonS3StripExtensionImage.Checked = Config.AmazonS3Settings.RemoveExtensionImage;
|
||||
cbAmazonS3StripExtensionVideo.Checked = Config.AmazonS3Settings.RemoveExtensionVideo;
|
||||
cbAmazonS3StripExtensionText.Checked = Config.AmazonS3Settings.RemoveExtensionText;
|
||||
UpdateAmazonS3Status();
|
||||
|
||||
#endregion
|
||||
|
@ -2271,6 +2274,21 @@ private void cbAmazonS3PublicACL_CheckedChanged(object sender, EventArgs e)
|
|||
Config.AmazonS3Settings.SetPublicACL = cbAmazonS3PublicACL.Checked;
|
||||
}
|
||||
|
||||
private void cbAmazonS3StripExtensionImage_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Config.AmazonS3Settings.RemoveExtensionImage = cbAmazonS3StripExtensionImage.Checked;
|
||||
}
|
||||
|
||||
private void cbAmazonS3StripExtensionVideo_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Config.AmazonS3Settings.RemoveExtensionVideo = cbAmazonS3StripExtensionVideo.Checked;
|
||||
}
|
||||
|
||||
private void cbAmazonS3StripExtensionText_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
Config.AmazonS3Settings.RemoveExtensionText = cbAmazonS3StripExtensionText.Checked;
|
||||
}
|
||||
|
||||
#endregion Amazon S3
|
||||
|
||||
#region ownCloud / Nextcloud
|
||||
|
|
Loading…
Reference in a new issue