c# filestream 不支持 uri 格式
时间: 2024-02-26 13:55:19 浏览: 15
是的,C#中的FileStream类不支持URI格式的路径。它只能接受本地文件系统路径作为输入。如果你想使用URI路径来读取文件,可以使用WebClient类来下载文件并将其保存在本地文件系统中,然后使用FileStream来读取本地文件系统路径的文件。或者,你也可以使用其他支持URI路径的类,如HttpClient类来读取文件。
相关问题
C# 调用unicloud
UniCloud 是一种基于云计算的云存储服务,您可以使用 C# 通过 HTTP 请求调用 UniCloud API 实现云存储的相关操作。以下是使用 C# 调用 UniCloud 的简单示例:
```csharp
using System;
using System.IO;
using System.Net;
using System.Text;
public class UniCloudClient
{
private string AccessKey;
private string SecretKey;
public UniCloudClient(string accessKey, string secretKey)
{
this.AccessKey = accessKey;
this.SecretKey = secretKey;
}
private string GetAuthorization(string method, string path, string date)
{
string signStr = string.Format("{0}\n\n\n{1}\n{2}", method, date, path);
byte[] signBytes = Encoding.UTF8.GetBytes(signStr);
byte[] keyBytes = Encoding.UTF8.GetBytes(SecretKey);
var hmac = new System.Security.Cryptography.HMACSHA1(keyBytes);
byte[] hashBytes = hmac.ComputeHash(signBytes);
return "UNICLOUD " + AccessKey + ":" + Convert.ToBase64String(hashBytes);
}
private HttpWebRequest CreateRequest(string method, string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Method = method;
request.Headers.Add("X-UniCloud-Date", DateTime.UtcNow.ToString("r"));
request.Headers.Add("Authorization", GetAuthorization(method, request.RequestUri.PathAndQuery, request.Headers["X-UniCloud-Date"]));
return request;
}
public string UploadFile(string bucketName, string objectKey, string filePath)
{
string url = string.Format("https://{0}.unicloudsrv.com/{1}", bucketName, objectKey);
HttpWebRequest request = CreateRequest("PUT", url);
using (Stream requestStream = request.GetRequestStream())
{
using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) > 0)
{
requestStream.Write(buffer, 0, bytesRead);
}
}
}
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
return response.Headers["ETag"];
}
}
public void DownloadFile(string bucketName, string objectKey, string filePath)
{
string url = string.Format("https://{0}.unicloudsrv.com/{1}", bucketName, objectKey);
HttpWebRequest request = CreateRequest("GET", url);
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
using (FileStream fileStream = new FileStream(filePath, FileMode.Create, FileAccess.Write))
{
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = responseStream.Read(buffer, 0, buffer.Length)) > 0)
{
fileStream.Write(buffer, 0, bytesRead);
}
}
}
}
}
}
```
在上面的代码中,UniCloudClient 类封装了调用 UniCloud API 的相关方法,其中 UploadFile 方法可以将本地文件上传到 UniCloud 云存储中,DownloadFile 方法可以将 UniCloud 中的文件下载到本地文件系统中。
你需要将代码中的 AccessKey 和 SecretKey 替换为你自己的 UniCloud 访问密钥,同时还需要根据具体的业务需求修改代码中的 bucketName、objectKey 和 filePath 等参数。
C# FTP 上传下载
要在C#中进行FTP上传和下载,您可以使用FTPWebRequest类来实现。
对于上传,您可以使用以下代码示例:
```csharp
public void UploadFile(string localFilePath, string remoteFileName)
{
string ftpURI = "ftp://" + ftpServerIP + "/" + ftpRemotePath + "/" + remoteFileName;
FtpWebRequest ftpRequest = (FtpWebRequest)FtpWebRequest.Create(new Uri(ftpURI));
ftpRequest.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
ftpRequest.Method = WebRequestMethods.Ftp.UploadFile;
ftpRequest.UseBinary = true;
using (FileStream fileStream = File.OpenRead(localFilePath))
{
using (Stream ftpStream = ftpRequest.GetRequestStream())
{
byte[] buffer = new byte<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [C# FTP操作(上传、下载等……)](https://blog.csdn.net/u011465910/article/details/126563124)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]