2016-12-08 7 views
1

写真ライブラリから取得した画像をサーバーのシミュレータにアップロードします。しかし毎回、私はこのjson応答を得ています:UIImagePickerControllerを使用してサーバーに画像をアップロードすると、アップロードしようとしているファイルの種類が表示されません(Swift/iOS)

Here the jsonObject is Optional({ 
    status = "The filetype you are attempting to upload is not allowed."; 
}) 

私はこれをシミュレータでテストしています。どのタイプのファイルタイプが許可されていませんか?私はそれを理解していない。

これは、コードの私のブロックである:ここでは

self.headerImageView.image=info[UIImagePickerControllerOriginalImage] as? UIImage 

let image1=info[UIImagePickerControllerOriginalImage] as? UIImage 

let imgdata : NSData = UIImagePNGRepresentation(image1!)! 

let appDelegate1 = UIApplication.sharedApplication().delegate as! AppDelegate 

UserRoomid=appDelegate1.roomlistid as String 


let request:NSMutableURLRequest = NSMutableURLRequest(URL: NSURL(string:"\(liveurl)rooms/image_upload?user_id=\(webservice8)")!) 

var session = NSURLSession.sharedSession() 

request.HTTPMethod = "POST" 

let boundary = generateBoundaryString() 

let contentType = NSString(format: "multipart/form-data; boundary=%@",boundary) 

request.addValue(contentType as String, forHTTPHeaderField: "Content-Type")    

let body = NSMutableData() 
body.appendData(NSString(format: "\r\n--%@\r\n",boundary).dataUsingEncoding(NSUTF8StringEncoding)!) 

body.appendData(NSString(format:"Content-Disposition: form-data; name=\"title\"\r\n\r\n").dataUsingEncoding(NSUTF8StringEncoding)!) 

body.appendData("Hello World".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)!) 

body.appendData(NSString(format: "\r\n--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!) 

body.appendData(NSString(format:"Content-Disposition: form-data; name=\"uploadedfile\"; filename=\"bklblk.jpg\"\r\n").dataUsingEncoding(NSUTF8StringEncoding)!) 

body.appendData(NSString(format: "Content-Type: application/octet-stream\r\n\r\n").dataUsingEncoding(NSUTF8StringEncoding)!) 

body.appendData(imgdata) 


body.appendData(NSString(format: "\r\n--%@\r\n", boundary).dataUsingEncoding(NSUTF8StringEncoding)!) 


request.HTTPBody = body 

let operation : AFHTTPRequestOperation = AFHTTPRequestOperation(request: request) 

operation.responseSerializer.acceptableContentTypes = NSSet(object: "text/html") as Set<NSObject> 

operation.setCompletionBlockWithSuccess ({ 

    (operation : AFHTTPRequestOperation!, responseObject: AnyObject!) in 

    let response : NSString = operation.responseString! 

    print("success is \(response)") 

    print("Here the responseObject for success is \(responseObject)") 
)} 

は私のサーバーのコードです:

public function image_upload() 
{ 
    $_FILES['uploadedfile']['type'] = 'image/png'; 
    $id = $this->input->get('user_id'); 

    $file_element_name = 'uploadedfile'; 

    $this->path = realpath(APPPATH . '../images/users/'); 
    $status = ""; 
    $msg = ""; 
    $file_element_name = 'uploadedfile'; 

    if ($status != "error")  
    { 
     if(!is_dir($this->path.'/'.$id)) 
     { 
      mkdir($this->path.'/'.$id, 0777, true); 
     } 

     $config['upload_path'] = dirname($_SERVER['SCRIPT_FILENAME']).'/images/users/'.$id; 

     $config['allowed_types'] = 'gif|jpg|png|jpeg|GIF|JPG|PNG|JPEG'; 
     $config['file_name'] = 'userpic.jpg'; 
     $config['overwrite'] = TRUE; 
     $this->load->library('upload', $config); 

     $this->upload->initialize($config); 

     if(!$this->upload->do_upload($file_element_name)){ 
      $status = 'error'; 
      $msg = $this->upload->display_errors('',''); 
      $data = ""; 
      echo '[{"status":"'.$msg.'"}]'; 
     } 
     else { 
      $data = $this->upload->data(); 
      $image = base_url().'/images/'.$id.'/userpic_thumb.jpg'; 
      $config1['image_library'] = 'gd2'; 
      $config1['source_image'] = dirname($_SERVER['SCRIPT_FILENAME']).'/images/users/'.$id.'/userpic.jpg'; 
      $config1['new_image'] = dirname($_SERVER['SCRIPT_FILENAME']).'/images/users/'.$id.'/userpic_thumb.jpg'; 
      $config1['maintain_ratio'] = TRUE; 
      $config1['width'] = 107; 
      $config1['height'] = 78; 

      $this->load->library('image_lib'); 

      $this->image_lib->initialize($config1); 

      if (! $this->image_lib->resize()) 
      { 
       $resize = $this->image_lib->display_errors(); 
      } 
      //$image = base_url().'/images/'.$id.'/pic_file.jpg'; 
    $image = base_url().'images/users/'.$id.'/userpic_profile.jpg'; 
      $config2['image_library'] = 'gd2'; 
      $config2['source_image'] = dirname($_SERVER['SCRIPT_FILENAME']).'/images/users/'.$id.'/userpic.jpg'; 
      $config2['new_image'] = dirname($_SERVER['SCRIPT_FILENAME']).'/images/users/'.$id.'/userpic_profile.jpg'; 
      $config2['maintain_ratio'] = TRUE; 
      $config2['width'] = 209; 
      $config2['height'] = 209; 

      $this->load->library('image_lib'); 

      $this->image_lib->initialize($config2); 

      if (! $this->image_lib->resize()) 
      { 
       $resize = $this->image_lib->display_errors(); 
      } 
      //$image = base_url().'/images/'.$id.'/pic_home.jpg'; 
    $image = base_url().'images/users/'.$id.'/userpic_home.jpg'; 
      $config3['image_library'] = 'gd2'; 
      $config3['source_image'] = dirname($_SERVER['SCRIPT_FILENAME']).'/images/users/'.$id.'/userpic.jpg'; 
      $config3['new_image'] = dirname($_SERVER['SCRIPT_FILENAME']).'/images/users/'.$id.'/userpic_home.jpg'; 
      $config3['maintain_ratio'] = TRUE; 
      $config3['width'] = 320; 
      $config3['height'] = 320; 

      $this->load->library('image_lib'); 

      $this->image_lib->initialize($config3); 

      if (! $this->image_lib->resize()) 
      { 
       $resize = $this->image_lib->display_errors(); 
      } 
      $data = $this->upload->data(); 

      $resize = base_url().'images/users/'.$id.'/userpic.jpg'; 
      //$resize = base_url().'images/'.$id.'/pic.jpg'; 

      echo '[{"image":"'.$image.'","resize":"'.$resize.'"}]';exit; 

     } 

     @unlink($_FILES[$file_element_name]); 
    } 
} 
+0

を使用しようと、あなたはまた、サーバコードを表示することができますか? –

+0

を確認してください。質問を編集しました。 –

+0

aaたくさんのコードが分かりません$ _FILES ['uploadedfile'] ['type'] = 'image/png'; –

答えて

0

は、サーバコードとして

if(isset($_FILES['photo']['tmp_name'])) { 
       $file = $_FILES['photo']['tmp_name']; 
       if (move_uploaded_file($file, ROOT_DIRECTORY.'../../../../images/driver_'.$driver->id.'.jpg')) { 
     //success 
       } 
      } 
+0

問題は、PHPのサーバーで許可されたファイルの種類で、彼らは、サーバー側でjpg、jpeg、png形式を許可していたが、私の端からアップロードされていた画像はjpgでしたが、形式の形式は拒否されました。彼らはそれを修正するためにバックエンドの人たちは、すべての許可されたタイプを変更し、問題が解決された/ –

関連する問題