저는 개발중인 Xamarin.iOS 응용 프로그램으로 해결해야하는 문제에 대한 해결책을 찾기 위해 몇 시간 동안 웹을 수색했습니다. 현장에있는 대부분의 고객은 우리의 백엔드에있는 FTP로 이동하는 작업 주문 (티켓)에 첨부 된 사진을 업로드해야합니다. 동료가 Android 앱을 개발했으며 FtpRequest를 FtpWebRequest에 캐스팅 한 현재 방법을 사용했습니다. 사용자가 괜찮은 연결을 가지고 있으면 서버는 90 %의 시간 동안 작동하고 서버에 업로드됩니다.NSUrlSession을 사용하여 파일을 FTP 서버에 업로드 할 수 있습니까?
문제가 있습니까? 100 % 시간이 필요하며 배경에 있어야합니다. 나는 NSUrlSession이 iOS에 고유하고 backgrounding에 대한 지원을 가지고 있기 때문에이 문제를 해결하는 최선의 방법 인 것으로 나타났습니다. 내 유일한 문제는 session.CreateUploadTask
으로 UploadTask를 만들려고 할 때 "경로에서 파일을 읽을 수 없습니다"라는 메시지가 표시되는데 그 경로는 file://var/mobile/Containers/Data/Application/850CB1FE-9C2D-456C-8B5F-921DC8D5CEF5/Documents/PolarisPictures2/VUPSXOUTA722002799CMC5022017103109544681088_1.jpeg
입니다. 나는 파일이 해당 경로에 파일 이름을 인쇄하여 foreach(var file in Directory.EnumerateFiles(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "PolarisPictures2"))
을 사용하여 이미 존재 함을 확인했습니다. file : // 프로토콜을 사용하지 않고 "... is not valid file : // url."과 함께 오류가 반환됩니다. 그래서 파일에 제대로 액세스하지 못하거나 아니면 단순히 수행하려는 작업을 수행 할 방법이 없다는 것입니까?
아무런 방법이 없다면 누구나 내가 필요한 backgrounding 기능을 가장 잘 달성 할 수있는 솔루션을 제공 할 수 있습니까?
감사합니다.
감사합니다.
이NSUrlSession session = null;
NSUrlSessionConfiguration config = NSUrlSessionConfiguration.CreateBackgroundSessionConfiguration("com.PolarisFTPUpload.BackgroundSession");
session = NSUrlSession.FromConfiguration(config, (NSUrlSessionDelegate)new MySessionDelegate(), new NSOperationQueue());
string docs = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
docs = docs.Replace("/var", "file://var");
string filepath = System.IO.Path.Combine(docs, "PolarisPictures2/VUPSXOUTA722002799CMC5022017103109544681088_1.jpeg");
Console.WriteLine(filepath);
string UploadURLString = "ftp://myftpUser:[email protected]:Port/Pictures/Database" + "/" + DateTime.Today.Year + "/" + DateTime.Today.Month + "/" + DateTime.Today.Day + "/";
NSUrlSessionUploadTask uploadTask;
NSUrl uploadURL = NSUrl.FromString(UploadURLString);
NSUrlRequest req = NSUrlRequest.FromUrl(uploadURL);
uploadTask = session.CreateUploadTask(req, NSUrl.FromString(filepath));
들었습니다. 그래, 불행하게도 그 결정의 중재자는 아니야, 형.Apple의 설명서를 읽은 며칠 후 100 % 정확하며 마침내 내 HTTP 게시물 업로드 작업을 마쳤다고 말할 것입니다. .NET 웹 API를 사용하여 FTP 대신 여기에 내 응용 프로그램의 기능을 훨씬 더 많이 포함하게되었습니다. 우리는 소프트웨어의 일부 구식 부분을 가지고 있으며, 나는 그것이 변해야한다고 동의합니다. 그래도 고마워! 확실히 질문에 대한 적절한 대답. –