我正在尝试使用 C# 将文件上传到 FTP 服务器。除了我的所有文件(一旦在服务器上)都有页眉和页脚这一事实之外,上传工作正常。这里有一个例子:
--------------8d5fde16cb03f95
Content-Disposition: form-data; name="file"; filename="PNPP190618.manifest"
Content-Type: application/octet-stream
<Real file content here>
--------------8d5fde16cb03f95
当然我检查了我的原始文件没有这个文本,我上传了一些有同样问题的二进制文件。
谢谢你。
编辑:忘记向您展示我的代码:
WebClient client = new System.Net.WebClient();
Uri uri = new Uri(FTPHost + new FileInfo(FilePath).Name);
client.UploadProgressChanged += new UploadProgressChangedEventHandler(OnFileUploadProgressChanged);
client.UploadFileCompleted += new UploadFileCompletedEventHandler(OnFileUploadCompleted);
client.Credentials = new System.Net.NetworkCredential(FTPUserName, FTPPassword);
client.UploadFileAsync(uri, "STOR", FilePath);
EDIT2:WinSCP 会话日志(此方法没有问题):https : //pastebin.com/sv7FNC0i
EDIT3:我没有使用代理。
我试图在 Unity 2017 (Mono .NET 3.5) 和控制台项目 (.NET Framework 3.5) 的最小示例上重现该问题。.NET Framework 没有问题,但在 Unity 2017 中有问题。
以下是重现最小 Unity 项目的步骤:
创建一个新的空白 Unity 项目
在场景中添加一个空的 GameObject,并添加一个新脚本
粘贴下面的代码并将类名替换为您的脚本文件名
用文件和FTP服务器的示例填充属性
按播放
using System;
using System.IO;
using System.Net;
using UnityEngine;
public class Test : MonoBehaviour {
string FTPHost = "ftp://Fill here";
string FTPUserName = "Fill here";
string FTPPassword = "Fill here";
string FilePath = "Fill here";
// Use this for initialization
void Start () {
WebClient client = new WebClient();
Uri uri = new Uri(FTPHost + new FileInfo(FilePath).Name);
client.Credentials = new NetworkCredential(FTPUserName, FTPPassword);
client.UploadFile(uri, WebRequestMethods.Ftp.UploadFile, FilePath);
}
// Update is called once per frame
void Update () {
}
}
拉莫斯之舞
相关分类