Я пытаюсь загрузить изображение на сервер PHP, и загрузка изображений работает нормально. Но я также хочу отправить некоторые параметры с самим файлом изображения. Пожалуйста, помогите мне с приведенным ниже кодом на Swift 2.2/iOS 9.3 для того, как я могу добавить параметры вместе с файлом изображения.Загрузить изображение с параметром в Swift 2.2
Мой код PHP сервер выглядит:
$info = pathinfo($_FILES['file']['name']);
if ($info) {
$imageName = md5(uniqid(rand(), true));
$imageSize = getimagesize($_FILES['file']['tmp_name']);
if ($imageSize === FALSE) {
$newname = "default.jpg";
}
else {
$ext = $info['extension']; // get the extension of the file
$newname = $imageName.".".$ext;
}
$target = './images/'.$newname;
if (move_uploaded_file($_FILES["file"]["tmp_name"], $target))
{
sendResponse(200, 'SUCCESS_IMAGE');
return true;
}
Swift код выглядит:
func UploadRequest()
{
let url = NSURL(string: "http://www.themostplayed.com/rest/upload.php")
let request = NSMutableURLRequest(URL: url!)
request.HTTPMethod = "POST"
let boundary = generateBoundaryString()
request.setValue("multipart/form-data; boundary=\(boundary)", forHTTPHeaderField: "Content-Type")
if (image.image == nil)
{
return
}
let image_data = UIImagePNGRepresentation(image.image!)
if(image_data == nil)
{
return
}
let body = NSMutableData()
let fname = "test.png"
let mimetype = "image/png"
body.appendData("--\(boundary)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("Content-Disposition:form-data; name=\"test\"\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("hi\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("--\(boundary)\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("Content-Disposition:form-data; name=\"file\"; filename=\"\(fname)\"\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("Content-Type: \(mimetype)\r\n\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData(image_data!)
body.appendData("\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
body.appendData("--\(boundary)--\r\n".dataUsingEncoding(NSUTF8StringEncoding)!)
request.HTTPBody = body
let session = NSURLSession.sharedSession()
let task = session.dataTaskWithRequest(request) {
(
let data, let response, let error) in
guard let _:NSData = data, let _:NSURLResponse = response where error == nil else {
print("error")
return
}
let dataString = NSString(data: data!, encoding: NSUTF8StringEncoding)
print(dataString)
}
task.resume()
}
func generateBoundaryString() -> String
{
return "Boundary-\(NSUUID().UUIDString)"
}
Спасибо за помощь, вы уверены, что библиотека Alamofire не будет нарушать какие-либо рекомендации Apple. Мой код загрузки изображений работает отлично даже сейчас, просто хочу добавить параметры. Я думаю, что если мы сможем сделать это на моем существующем коде, это будет великолепно! –
Да, это не нарушает ни одну из директив Apple. Также он широко используется для выполнения задачи веб-сервиса. Как и раньше, в этой библиотеке я использовал тот же код, который вы использовали для загрузки изображения, но теперь я использую Alamofire api для него. –