這裏是我的代碼,我使用的多數據發佈PDF文件:多的數據,大小爲0的目標C
我使用的是iOS 10
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData];
[request setHTTPShouldHandleCookies:NO];
[request setTimeoutInterval:30];
[request setHTTPMethod:@"POST"];
NSString *boundary = @"abc123defg321sdfdff";
__block NSData *filedata;
NSString*str=[[attachData.fileName componentsSeparatedByString:@"."]objectAtIndex:1];
if([str caseInsensitiveCompare:@"jpg"]||[str caseInsensitiveCompare:@"png"]){
[attachData loadOriginalImageWithCompletion:^(UIImage * _Nullable resultImage) {
filedata = UIImageJPEGRepresentation(resultImage, 0.9);
}];
}else{
filedata = [NSData dataWithContentsOfFile:attachData.originalFileResource];
}
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary];
[request setValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *body = [NSMutableData data];
//add params
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", @"data"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"%@\r\n",requestJson]dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@\"\r\n",fileParams,attachData.fileName] dataUsingEncoding:NSUTF8StringEncoding]];
if([str caseInsensitiveCompare:@"jpg"]||[str caseInsensitiveCompare:@"png"]){
[body appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
}else {
[body appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
}
[body appendData:filedata];
[body appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
// This is the final delimiter which ends the body in format "--%@--".
[body appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"httpbody:%@",body);
[request setHTTPBody:body];
NSURLResponse *response; NSError *error;
NSData*responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSDictionary *results = [NSJSONSerialization
JSONObjectWithData:responseData
options:kNilOptions
error:nil];
當我在DB文件檢查是那裏有相同的名字,但大小爲零,沒有內容。對於多上傳
var url_request = URLRequest(url: URL(string: 「tester/url」)!)
url_request.httpShouldHandleCookies = false
url_request.timeoutInterval = 60
url_request.httpMethod = "POST"`
let boundary = 「—————App——————「
let form_data = "multipart/form-data; boundary=\(boundary)"
url_request.setValue(form_data, forHTTPHeaderField: "Content-Type")
let body = NSMutableData()
/*--------------- test ---------------*/
body.appendString("--\(boundary)\r\n")
body.appendString("Content-Disposition: form-data; name=\」\(test_key)\r\n\r\n」)
body.appendString(「\(test_obj)\r\n」)
/*----------- Image --------------*/
if (str_photo_val != nil)
{
body.appendString("--\(boundary)\r\n")
let mimetype = "image/jpg"
let defFileName = 「test.jpg」
let imageData = UIImageJPEGRepresentation(str_photo_val!, 1)
body.appendString("Content-Disposition: form-data; name=\"\(str_photo_key)\"; filename=\"\(defFileName)\"\r\n")
body.appendString("Content-Type: \(mimetype)\r\n\r\n")
body.append(imageData!)
body.appendString("\r\n")
}
body.appendString("--\(boundary)\r\n")
url_request.httpBody = body as Data
let postLength: String = "\(UInt(body.length))"
url_request.setValue(postLength, forHTTPHeaderField: "Content-Length")
let task = URLSession.shared.dataTask(with: url_request, completionHandler: { (data, response, error) in
if error != nil{
DispatchQueue.main.async {
hideLoadingHUD(for_view: self.view)
}
return
}
do {
let jsonData = try JSONSerialization.jsonObject(with: data!, options: []) as? [String:AnyObject]
print("Result -> \(String(describing: jsonData))")
let succed = jsonData?[APIKey.success.rawValue] as? Bool
DispatchQueue.main.async {
hideLoadingHUD(for_view: self.view)
}
}
}
catch {
print("Error -> \(error)")
DispatchQueue.main.async {
hideLoadingHUD(for_view: self.view)
}
}
})
task.resume()
}
否在頭中有「Content-Length」?這可能是原因... – holex
它正在工作,但突然停止工作的工作,文件越來越腐敗在服務器端 – Sangu