建議下載文件
簡答題
如何返回使用PHP在服務器端創建的文本文件?
使用從URL中提取文件的基礎對象。 Php正在完成繁重的工作以生成文件。您只需將其存入網絡可訪問的位置即可。如果擔心安全問題,您需要深入瞭解Secure Transport Reference中的各種選項(如果需要,還可以搜索堆棧溢出,以獲得有關ssl的問題)。
如何接收ios應用程序端的文件?
基本上選擇一個基礎對象,然後使用它的writeToFile方法(示例在細節下顯示)。 NSURLConnectionDelegate協議或NSURLSession類的擴展使用(請參閱將下載任務添加到會話 - 需要iOS7 +一節)。
樣品
如果你想繼續使用字符串來移動你的數據在你身邊可能要看一看在字符串編程指南中的樣品(link):
樣品包括關鍵任務,你會想要創建的字符串後做:
NSURL *URL = ...;
NSString *string = ...;
NSError *error;
BOOL ok = [string writeToURL:URL atomically:YES
encoding:NSUnicodeStringEncoding error:&error];
if (!ok) {
// an error occurred
NSLog(@"Error writing file at %@\n%@",
path, [error localizedFailureReason]);
// implementation continues ...
詳細
您可以使用Web服務器的內置功能來支持文件分發。因此,在這種情況下,Php可以將文本文件存放到可訪問的網頁文件夾中。一旦你的文件在網絡訪問的地址創建,你可以考慮使用的... withContentsOfURL方法,可以將文件轉換成某種形式的可用數據對象的一個...
//transform file contents into array
NSArray *array = [NSArray arrayWithContentsOfURL:[NSURL URLWithString:@"https://www.somelocation.com/temp/test.text"]];
或
//transform file contents into nsdata
NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://www.somelocation.com/temp/test.text"]];
或
//transform file contents into dictionary
NSDictionary * dictionary = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@"https://www.somelocation.com/temp/test.text"]]
如果您更願意將文件下載到您的系統(然後就可以在本地工作),你可以改變物體使用將writeToFile方法創建。在這種情況下,我建議你使用的NSData來檢索文件,然後你可以使用該文件保存到本地目錄:
//use this instance method on the NSData object
- (BOOL)writeToFile:(NSString *)path options:(NSDataWritingOptions)mask error:(NSError **)errorPtr
最後,您還可以包住整個過程變成一個NSURLSessionDataTask如果你正在使用iOS7。這將允許您以異步方式執行任務(請參閱參考瞭解更多信息)。
- (NSURLSessionDataTask *)dataTaskWithURL:(NSURL *)url completionHandler:(void (^)(NSData *data, NSURLResponse *response, NSError *error))completionHandler
甚至有一種方法可以在CIImage類上使用此方法將您的內容變爲圖像。
+ (CIImage *)imageWithContentsOfURL:(NSURL *)url options:(NSDictionary *)d
等因素考慮
您可能還需要與文件工作,你已經下載了它,我會建議NSFileHandle類參考的審查,對閱讀的興趣區間後並使用塊寫入。
其他考慮因素可能需要根據數據的敏感性來保護文件。這可能會影響您選擇實施的流程。
感謝您的回覆,但是如何使用HTTPREQUEST中定義的響應而不使用您以上寫過的方式? – user2960510