小编nit*_*f50的帖子

在SQL中选择所有XML属性

我有一个SQL表字段中包含的XML值列表,如下所示:

<valuelist xmlns="" name="VL_IncCompCondVL">
  <li value="BL" item="BLOCKED" />
  <li value="NK" item="NO KEY" />
  <li value="FL" item="FLOODED" />
  <li value="TD" item="TORN DOWN" />
  <li value="UL" item="UNABLE TO LOCATE" />
</valuelist>
Run Code Online (Sandbox Code Playgroud)

我希望能够像这样创建一个临时SQL表:

CREATE TABLE #incompleteCode
(
value nvarchar(2),
item nvarchar(20)
)
Run Code Online (Sandbox Code Playgroud)

并使用XML中的所有值/项填充它,以便我可以使用临时表与另一个SELECT语句进行JOIN.

SELECT Data.value('(/valuelist/li/@item)[1]', 'nvarchar(50)') AS Item
                                                    FROM ValueList
                                                    WHERE Name = 'VL_IncCompCondVL'
Run Code Online (Sandbox Code Playgroud)

那个语句让我第一个,如果我将[1]增加到[2],依此类推,我可以逐个选择每个属性.但我必须相信有一种方法可以让他们全部.我尝试了一些变化,我只是没有搞清楚.我想我需要在某个地方使用*通配符.

xml sql sql-server xpath

9
推荐指数
1
解决办法
7345
查看次数

Howto:下载保存C#原始名称的文件?

我有一个服务器上的文件,可以从这样格式的URL访问:http:// address/Attachments.aspx?id = GUID

我可以访问GUID,并且需要能够将多个文件下载到同一文件夹.

如果你把这个URL扔到浏览器中,你将下载该文件,它将具有原始文件名.

我想在C#中复制该行为.我尝试过使用WebClient类的DownloadFile方法,但是必须指定一个新的文件名.更糟糕的是,DownloadFile将覆盖现有文件.我知道我可以为每个文件生成一个唯一的名称,但我真的很喜欢原始文件.

是否可以下载保留原始文件名的文件?

更新:

使用下面的精彩答案来使用WebReqest类,我提出了以下完美的工作:

    public override void OnAttachmentSaved(string filePath)
    {
        var webClient = new WebClient();

        //get file name
        var request = WebRequest.Create(filePath);
        var response = request.GetResponse();
        var contentDisposition = response.Headers["Content-Disposition"];
        const string contentFileNamePortion = "filename=";
        var fileNameStartIndex = contentDisposition.IndexOf(contentFileNamePortion, StringComparison.InvariantCulture) + contentFileNamePortion.Length;
        var originalFileNameLength = contentDisposition.Length - fileNameStartIndex;
        var originalFileName = contentDisposition.Substring(fileNameStartIndex, originalFileNameLength);

        //download file
        webClient.UseDefaultCredentials = true;
        webClient.DownloadFile(filePath, String.Format(@"C:\inetpub\Attachments Test\{0}", originalFileName));            
    }
Run Code Online (Sandbox Code Playgroud)

只需要进行一些字符串操作即可获得实际的文件名.我太激动了.感谢大家!

c# webclient download

3
推荐指数
1
解决办法
8115
查看次数

标签 统计

c# ×1

download ×1

sql ×1

sql-server ×1

webclient ×1

xml ×1

xpath ×1