我正在尝试在Swift中运行HTTP请求,将POST 2参数发送到URL.
例:
链接: www.thisismylink.com/postName.php
PARAMS:
id = 13
name = Jack
Run Code Online (Sandbox Code Playgroud)
最简单的方法是什么?
我甚至不想阅读回复.我只是想发送它来通过PHP文件对我的数据库进行更改.
所以这个HTML代码为我提交了正确格式的数据.
<form action="https://www.example.com/register.php" method="post" enctype="multipart/form-data">
Name: <input type="text" name="userName"><BR />
Email: <input type="text" name="userEmail"><BR />
Password: <input type="text" name="userPassword"><BR />
Avatar: <input type="file" name="avatar"><BR />
<input type="submit">
</form>
Run Code Online (Sandbox Code Playgroud)
我已经查看过很多关于如何在iOS上进行multipart/form-data POST的文章,但没有一篇真正解释如果有正常的参数以及文件上传怎么办.
你能帮我解决一下在Obj-C中发帖的代码吗?
谢谢!
我在使用multipart-form上传图片时遇到问题
这是我从这个答案中使用的代码
var request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
var boundary = generateBoundaryString()
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
var body = NSMutableData()
if self.img.image != nil {
var imageData = UIImagePNGRepresentation(self.img.image)
if imageData != nil {
body.appendString("--\(boundary)\r\n")
body.appendString("Content-Disposition: form-data; name=\"image\"; filename=\"image.png\"\r\n")
body.appendString("Content-Type: image/png\r\n\r\n")
body.appendData(imageData!)
body.appendString("\r\n")
}
}
body.appendString("--\(boundary)--\r\n")
request.setValue("\(body.length)", forHTTPHeaderField:"Content-Length")
request.HTTPBody = body
Run Code Online (Sandbox Code Playgroud)
然后我使用NSURLSession来应用请求
服务器说我没有选择上传图片我只想暂时上传图片
我是否必须使用图像路径上传任何图像,或者它的数据是否足够?
我是否会错过任何事情,有什么帮助才能理解这一点?
我正在用swift开发一个iPhone应用程序.我正在使用Alamofire框架来处理http请求.我Alamofire.request像这样用于POST,GET等:
Alamofire.request(.POST, myURL , parameters: ["a": "1", "b" : "2" ])
.response { (request, response, data, error) in
}
Run Code Online (Sandbox Code Playgroud)
我Alamofire.upload用来将图像上传到服务器:
Alamofire.upload(.POST, uploadURL , fileURL)
Run Code Online (Sandbox Code Playgroud)
两者都很完美,但现在我想上传一个图像并发送一些参数,我的内容类型应该是multipart/form-data并且Alamofire.upload不接受参数.
有两个问题,更SO关于这一问题迅速,其中第一个没有使用Alamofire(真的,为什么不呢?),并在第二个,mattt(Alamofire开发)引用使用的编码参数.
我检查了他的例子,但仍然无法弄清楚如何做到这一点.
任何人都可以帮我解决这个问题吗?
谢谢!:)
它不起作用,如何将图像从iOS Swift应用程序发送到我的PHP服务器?
@IBAction func upload(sender: UIButton) {
var imageData = UIImageJPEGRepresentation(img.image, 90)
// println(imageData)
let url = NSURL(string:"http://www.i35.club.tw/old_tree/test/uplo.php")
//let cachePolicy = NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData
//var request = NSMutableURLRequest(URL: url, cachePolicy: cachePolicy, timeoutInterval: 10)
var request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
// set Content-Type in HTTP header
let boundaryConstant = "----------V2ymHFg03esomerandomstuffhbqgZCaKO6jy";
let contentType = "multipart/form-data; boundary=" + boundaryConstant
NSURLProtocol.setProperty(contentType, forKey: "Content-Type", inRequest: request)
request.HTTPBody = imageData
// set data
//var dataString = "adkjlkajfdadf"
//let requestBodyData = (dataString as NSString).dataUsingEncoding(NSUTF8StringEncoding)
//request.HTTPBody = requestBodyData …Run Code Online (Sandbox Code Playgroud) 我正在努力将图像上传到服务器,因为有很多关于通过AFNetworking和NSURLSession上传图像的问题以及其他上传所有我想问的方法是我没有找到解释关于事情是如何工作以及在幕后发生了什么的整个概念我在搜索youtube时也可以在Swift中找到所有的东西并且完全不相信我的结果我发现这个答案对我来说很熟悉
//Init the NSURLSession with a configuration
NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: nil delegateQueue: [NSOperationQueue mainQueue]];
//Create an URLRequest
NSURL *url = [NSURL URLWithString:@"yourURL"];
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url];
//Create POST Params and add it to HTTPBody
NSString *params = @"api_key=APIKEY&email=example@example.com&password=password";
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setHTTPBody:[params dataUsingEncoding:NSUTF8StringEncoding]];
//Create task
NSURLSessionDataTask *dataTask = [defaultSession dataTaskWithRequest:urlRequest completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
//Handle your response here
}];
[dataTask resume];
Run Code Online (Sandbox Code Playgroud)
关于这个话题最受欢迎的答案是用户XJones: -
Here's code …Run Code Online (Sandbox Code Playgroud) 所以我将文件从swift上传到PHP服务器,POST请求按预期到达标题,所有但我无法得到任何东西$_FILES.它只是一个空数组.
我在Swift方面显然做错了,这是我的代码:
func testUpload(){
let bundle = NSBundle.mainBundle()
let path = bundle.pathForResource("someTestFile", ofType: "zip")!
var data: NSData = NSData(contentsOfFile: path)!
var request = NSMutableURLRequest(URL: NSURL(string: "http://testsite.com/upload")!)
request.HTTPMethod = "POST"
let boundary = "----------ds2Gry67efddagdfsfhsHF"
let contentType = "multipart/form-data; boundary=\(boundary)"
request.setValue(contentType, forHTTPHeaderField:"Content-Type")
request.setValue("Keep-Alive", forHTTPHeaderField: "Connection")
self.uploadFiles(request, data: data)
}
func uploadFiles(request: NSURLRequest, data: NSData) {
var configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
var session = NSURLSession(configuration: configuration, delegate: self, delegateQueue: NSOperationQueue.mainQueue())
var task = session.uploadTaskWithRequest(request, fromData: data)
task.resume()
}
Run Code Online (Sandbox Code Playgroud)
我很确定我错过了一些东西,我只是想不通它是什么......
来自Web编程世界,我非常适合处理多部分表单请求上传文件.但是,在iOS中,我们有一个NSURLSession用方法调用的东西uploadTaskWithRequest,它似乎是调用图像上传等方法.
你能解释两种方法之间的区别,多部分表单上传 vs uploadTaskWithRequest?如果我已经有一个处理多部分表单上传的后端,我可能需要进行哪些调整以便它也支持uploadTaskWithRequest?
我目前正在研究一种将视频短视频(10-30秒)上传到我的数据库的方法,并询问是否可以将视频从本地图库转换为base64,目前我使用 imagePickerController 获取视频你可以在这段代码中看到:
func imagePickerController(_ picker: UIImagePickerController,
didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
//Here is save the video URL
let url = info[.mediaURL] as? URL
//Here goes the code to convert this video URL to base64...
self.dismiss(animated: true)
}
Run Code Online (Sandbox Code Playgroud)
我还想知道是否可以将视频保存到 Base64 并将其发送到我的发布请求正文中,或者我应该使用其他方式将视频上传到服务器中?我愿意接受任何建议,谢谢
我需要将图像上传到服务器端点,其中结构必须如下所示:
{ "image": { "file": imageData }, "access_token": access_token }
Run Code Online (Sandbox Code Playgroud)
如何使用NSURLSession(甚至Alamofire或AFNetworking)发送此类请求?
我的 php 代码在服务器上创建了一个空图像
这是我的代码(swift4):
var encoded_img = imageTobase64(image: image1.image!)
func convertImageToBase64(image: UIImage) -> String {
let imageData = UIImagePNGRepresentation(image)!
return imageData.base64EncodedString(options: Data.Base64EncodingOptions.lineLength64Characters)
}
Run Code Online (Sandbox Code Playgroud)
代码:
$decodimg = base64_decode(_POST["encoded_img"]);
file_put_contents("images/".$imgname,$decodimg);
Run Code Online (Sandbox Code Playgroud)
以及准备请求的代码:
@IBAction func BtnSend(_ sender: UIButton) {
var url = "http://xxxxxx/msg.php"
var encoded_img = imageTobase64(image: image1.image!)
let postData = NSMutableData(data: ("message=" + message).data(using: String.Encoding.utf8)!)
postData.append(("&encoded_img=" + encoded_img).data(using: String.Encoding.utf8)!)
request = NSMutableURLRequest(url: NSURL(string: url)! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 20.0)
request.httpMethod = "POST"
request.httpBody = postData as Data
let session = URLSession.shared
let …Run Code Online (Sandbox Code Playgroud) 我是 iOS 开发的中级学生,我正在尝试制作一种将图像上传到服务器的方法。我了解 PHP 中的服务器端脚本。
但是当我按照教程在 Xcode 中上传图像时,我并没有真正掌握 NSData、NSObject、NSMutableData、NSString,似乎教程并不是真正的NSData、NSMutableData、NSString的基本方面......
如果想要漂亮的展示,我应该学习自动布局,集合视图等。
那么,我应该学习iOS开发中什么样的主题才能真正一步一步地理解这些东西?似乎我从来没有专门学习过这些东西。我不知道从哪里开始。
上传图片的代码是这样的:
func createBodyWithParameters(parameters: [String: String]?, filePathKey: String?, imageDataKey: NSData, boundary: String) -> NSData {
let body = NSMutableData();
if parameters != nil {
for (key, value) in parameters! {
body.appendString("--\(boundary)\r\n")
body.appendString("Content-Disposition: form-data; name=\"\(key)\"\r\n\r\n")
body.appendString("\(value)\r\n")
}
}
let filename = "user-profile.jpg"
let mimetype = "image/jpg"
body.appendString("--\(boundary)\r\n")
body.appendString("Content-Disposition: form-data; name=\"\(filePathKey!)\"; filename=\"\(filename)\"\r\n")
body.appendString("Content-Type: \(mimetype)\r\n\r\n")
body.appendData(imageDataKey)
body.appendString("\r\n")
body.appendString("--\(boundary)--\r\n")
return body
}
func generateBoundaryString() -> String {
return "Boundary-\(NSUUID().UUIDString)"
}
}
extension …Run Code Online (Sandbox Code Playgroud) swift ×9
ios ×7
nsurlsession ×3
alamofire ×2
base64 ×2
file-upload ×2
http-post ×2
image ×2
objective-c ×2
xcode ×2
httprequest ×1
json ×1
networking ×1
parameters ×1
php ×1
post ×1
upload ×1
urlsession ×1