繁体   English   中英

FTP 服务器文件上传 Cdn Ef Core

[英]FTP Server File Upload Cdn Ef Core

CDN安装在本地FTP服务器中。 我想将文件上传到它,但它的文件路径错误。 我认为这是由于 Handler 但我找不到错误。

上传文件;

public static class FileUpload
  {
    public static string ImageUpload(this IFormFile file, string path)
    {
      
            FtpWebRequest request = (FtpWebRequest)FtpWebRequest.Create(@"cdnadress" + "/" + Path.GetFileName(path));

            request.Method = WebRequestMethods.Ftp.UploadFile;
            request.Credentials = new NetworkCredential("username", "password");
            request.UsePassive = true;
            request.UseBinary = true;
            request.KeepAlive = true;

            //Load the file
            FileStream stream = File.OpenRead(path);
            byte[] buffer = new byte[stream.Length];

            stream.Read(buffer, 0, buffer.Length);
            stream.Close();

            //Upload file
            Stream reqStream = request.GetRequestStream();
            reqStream.Write(buffer, 0, buffer.Length);
            reqStream.Close();

            request = null;
            return null;
 }

创建处理程序;

   public class SliderCreateHandler : IRequestHandler<SliderCreate, ApiResponse<SliderResponse>>
 {
    private readonly IUnitOfWork _repo;
    private readonly IMapper _mapper;


public SliderCreateHandler(IUnitOfWork repo, IMapper mapper)
{
    _repo = repo;
    _mapper = mapper;
}

public async Task<ApiResponse<SliderResponse>> Handle(SliderCreate request, CancellationToken cancellationToken)
{ 
    var mapped = _mapper.Map<Slider>(request);

    mapped.ImageUrl = request.file.ImageUpload(Environment.CurrentDirectory+ @"\Image\Slider\");

    if (string.IsNullOrEmpty(mapped.ImageUrl)) 
        return new ErrorApiResponse<SliderResponse>(ResultMessage.UnsupportedFileType);

    if (mapped == null)
        return new ErrorApiResponse<SliderResponse>(ResultMessage.NotCreatedSlider);

    var model = await _repo.Sliders.AddAsync(mapped);

    var response = _mapper.Map<SliderResponse>(model);

    return new SuccessApiResponse<SliderResponse>(response);
}

}

这是错误ID。 我在某处的这条路上赛车,或者我错过了它。 你能帮助我吗?

在此处输入图像描述 在此处输入图像描述

如果您的目标是上传IFormFile ,那么:

  • 使用 class API,如IFormFile.CopyTo来访问文件内容。 都是内存中的数据。 不涉及物理路径/文件。
  • 使用IFormFile.FileName查找文件的名称。 一些备用名称是值得推荐的,因为浏览器可能不提供。
FtpWebRequest request =
    (FtpWebRequest)FtpWebRequest.Create(@"cdnadress" + "/" + file.FileName);

// rest of your FtpWebRequest setup here

using (Stream reqStream = request.GetRequestStream())
{
    file.CopyTo(reqStream);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM