写真ライブラリから取得した画像をサーバーのシミュレータにアップロードします。しかし毎回、私はこの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]);
}
}
を使用しようと、あなたはまた、サーバコードを表示することができますか? –
を確認してください。質問を編集しました。 –
aaたくさんのコードが分かりません$ _FILES ['uploadedfile'] ['type'] = 'image/png'; –