C# 什么是HttpResponse.Content.Headers.ContentDisposition?

C# 什么是HttpResponse.Content.Headers.ContentDisposition?,c#,C#,我可以在HttpResponse.Content.Headers.ContentDisposition中存储文件的版本号之类的值吗 我需要在文件头或其他地方写下文件的版本号,因为我想知道客户端是否在其iOS/Android智能手机上存储了某个文件的最新版本 例如:今天,客户机第一次从服务器下载名为MyFile.txt的文件。明天,客户端需要检查服务器上是否有新版本的MyFile.txt。如果是,请下载。如果没有,请不要下载 我在哪里可以存储文本文件的版本号,以便客户端可以发现服务器上的文件是否比

我可以在HttpResponse.Content.Headers.ContentDisposition中存储文件的版本号之类的值吗

我需要在文件头或其他地方写下文件的版本号,因为我想知道客户端是否在其iOS/Android智能手机上存储了某个文件的最新版本

例如:今天,客户机第一次从服务器下载名为MyFile.txt的文件。明天,客户端需要检查服务器上是否有新版本的MyFile.txt。如果是,请下载。如果没有,请不要下载

我在哪里可以存储文本文件的版本号,以便客户端可以发现服务器上的文件是否比存储的版本更新

是否可以将其存储在HttpResponse.Content.Headers.ContentDisposition中,或者是否需要始终创建新文件和文件名,例如MyFileVersion1.txt、MyFileVersion2.txt等

这就是我下载文件的方式。我使用新的ContentDisposition(httpResponse.Content.Headers.ContentDisposition.ToString()).FileName来获取文件名

string DownloadFile = await DownloadFileAsync(URL);

async Task<string> DownloadFileAsync(string fileUrl)
{
var _httpClient = new HttpClient { Timeout = TimeSpan.FromSeconds(15) };

try
{
    using (var httpResponse = await _httpClient.GetAsync(fileUrl))
    {
        if (httpResponse.StatusCode == HttpStatusCode.OK)
        {
            string localfilename = new ContentDisposition(httpResponse.Content.Headers.ContentDisposition.ToString()).FileName;
            byte[] byteresponse = await httpResponse.Content.ReadAsByteArrayAsync();
            string documentsPathnew = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
            string localPathnew = Path.Combine(documentsPathnew, localfilename);
            File.WriteAllBytes(localPathnew, byteresponse);
            return "Saved file: " + localfilename;
        }
        else
        {
            return "Url is invalid";
        }
    }
}
catch (Exception)
{
    return "Exception. Something went wrong.";
}
}
string DownloadFile=wait DownloadFileAsync(URL);
异步任务下载文件异步(字符串文件URL)
{
var_httpClient=newhttpclient{Timeout=TimeSpan.FromSeconds(15)};
尝试
{
使用(var httpResponse=awaitu httpClient.GetAsync(fileUrl))
{
if(httpResponse.StatusCode==HttpStatusCode.OK)
{
字符串localfilename=newcontentdisposition(httpResponse.Content.Headers.ContentDisposition.ToString()).FileName;
byte[]byteresponse=等待httpResponse.Content.ReadAsByteArrayAsync();
字符串documentsPathnew=Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
字符串localPathnew=Path.Combine(documentsPathnew,localfilename);
writealBytes(localPathnew,byteresponse);
返回“保存的文件:”+localfilename;
}
其他的
{
返回“Url无效”;
}
}
}
捕获(例外)
{
return“异常。出现问题。”;
}
}
指出

如果用户请求将内容保存到文件中,则Content Disposition response header字段可作为源服务器建议默认文件名的一种方式


为什么不使用名称为
Version
且值为任意值的?

不要尝试重新调整标准HTTP头的用途,因为它们是标准的。如果您需要自己的特殊标题,请添加它。我如何添加自己的特殊标题?我不希望客户端需要下载文本文件来获取/读取其版本号。我想在不从服务器下载文件的情况下获取文本文件的版本号。如果文件的版本号较新,我只想下载该文件。然后您应该使用HTTP HEAD请求,它将为您提供文件的所有头,而不实际下载它。至于版本控制,已经有一个名为ETag的标准HTTP标头,它返回正在下载的资源的哈希值-客户端应用程序应检查该标头,并且仅当资源的ETag与客户端的不同时才尝试下载资源。如何添加名称为“Version”且值为“1”的NameValueHeaderValue当我将文件上载到url时,是否将其复制到我的文本文件?当客户端检查其他文本文件以获取更新版本时,如何读取NameValueHeaderValue?客户端需要查明服务器上的文本文件是否比设备上存储的文件版本更新。