小编Ric*_*son的帖子

从c#中的HTTPWebResponse.GetResponseStream()上传到S3

我试图从HTTP流直接上传到S3,而不是先存储在内存中或作为文件.我已经使用Rackspace Cloud Files作为HTTP到HTTP进行此操作,但AWS身份验证超出了我的范围,因此我尝试使用SDK.

问题是上传流失败并出现此异常:

"This stream does not support seek operations."

我尝试过,PutObject并且TransferUtility.Upload都失败了同样的事情.

是否有任何方法可以在流进入S3时流入S3,而不是将整个内容缓冲到MemoryStreamFileStream

或者是否有使用HTTPWebRequest对S3请求进行身份验证的好例子,所以我可以复制我对Cloud Files的处理方式?

编辑: 或者 AWSSDK中是否有帮助函数用于生成授权标头?

码:

这是失败的S3部分(两个方法都包括完整性):

string uri = RSConnection.StorageUrl + "/" + container + "/" + file.SelectSingleNode("name").InnerText;
var req = (HttpWebRequest)WebRequest.Create(uri);
req.Headers.Add("X-Auth-Token", RSConnection.AuthToken);
req.Method = "GET";

using (var resp = req.GetResponse() as HttpWebResponse)
{
    using (Stream stream = resp.GetResponseStream())
    {
        Amazon.S3.Transfer.TransferUtility trans = new Amazon.S3.Transfer.TransferUtility(S3Client);
        trans.Upload(stream, config.Element("root").Element("S3BackupBucket").Value, container + file.SelectSingleNode("name").InnerText);

        //Use EITHER the above OR the …
Run Code Online (Sandbox Code Playgroud)

c# httpwebrequest amazon-web-services

7
推荐指数
1
解决办法
2851
查看次数

Ookii VistaFolderBrowserDialog并获取所选文件夹

我正在尝试使用Ookii对话框生成新的Vista样式文件夹选择对话框.这一切都适用于这个简单的代码:

VistaFolderBrowserDialog dlg = new VistaFolderBrowserDialog();
dlg.SelectedPath = Properties.Settings.Default.StoreFolder;
dlg.ShowNewFolderButton = true;
dlg.ShowDialog();
Run Code Online (Sandbox Code Playgroud)

但是,由于此对象上没有事件,我无法知道用户何时选择文件夹的任何方式.我可以轮询中的变化SelectedPath,但这似乎是一种非常低效的做事方式.

是否有一些我错过的通用C#技巧让我知道用户何时选择了一个文件夹并因此更新了其他字段?

.net c# wpf dialog

2
推荐指数
1
解决办法
3890
查看次数

标签 统计

c# ×2

.net ×1

amazon-web-services ×1

dialog ×1

httpwebrequest ×1

wpf ×1