পরিষেবাগুলি ব্যবহার করে কীভাবে চিত্রগুলি সংরক্ষণ করা যায়


8

আমি পরিষেবা 3 সম্পর্কে কিছু খুব বিস্তারিত টিউটোরিয়াল পেয়েছি I আমি তাদের খুব প্রশংসা করি এখানে একটি ছোট তালিকা রয়েছে।

http://drupal.org/node/1354202

নোড.স্যাভ পরিষেবাটি ব্যবহার করে কোনও নোডে একাধিক চিত্র কীভাবে যুক্ত করবেন?

http://drupal.org/node/1699354

তবে আমি মোবাইল অ্যাপ থেকে সার্ভারে চিত্রগুলি আপলোড করার উপায় খুঁজে পাচ্ছি না can এটা কি সম্ভব? আমি কোথায় উদাহরণ পেতে পারি?

এটি সম্পাদন করার জন্য কি পরিষেবাগুলিতে রয়েছে? প্রতিটি সমাধান দেখে মনে হচ্ছে এটির কাজ পেতে আমার কাছে ओ কোডের কিছু দরকার।


এই গিস্ট পরীক্ষা করুন ।
মুহাম্মদ রেদা

উত্তর:


6

আমার এখানে একবারের মতো প্রয়োজন ছিল, ওয়েব পরিষেবা ব্যবহার করে আমাকে একটি নোড তৈরি করতে হবে যা চিত্রও সাশ্রয় করবে। নিম্নলিখিত পরিষেবাগুলি ওয়েব পরিষেবা ব্যবহার করে চিত্র আপলোড করে এবং সংরক্ষণ করে।

// File validator.
$validators = array(
  /**
   * Defaults already allow png, jpg etc. If more needed to be supported,
   * edit here.
   */
  'file_validate_extensions' => array(),
  'file_validate_size' => array(),
);


foreach ($_FILES['files']['name'] as $field_name => $file_name) {
  // Save the file and get file object.
    $file = file_save_upload($field_name, $validators, file_default_scheme() . "://");

  // Check whether image is uploaded.
  if ($file->fid) {
    $node = new stdClass();
    $node->type = 'CONTENT_TYPE';
    $node->title = 'TITLE';
    $node->language = LANGUAGE_NONE;
    $node->uid = 'USER_UID';
    node_object_prepare($node);

    $node->field_custom[$node->language][0]['value'] = 'SOME_VALUE';
    // File upload here..
    $node->field_image[$node->language][0] = (array)$file;

    $node = node_submit($node);
    node_save($node);
  }
  else {                                                                      
    return services_error(t('File upload failed'), 406, t('File upload failed'));
  }
}

দ্রষ্টব্য: নিম্নলিখিত কোডগুলি পরিষেবাগুলি ব্যবহার করে পরীক্ষা করা হয়েছিল Also. এছাড়াও এটি একটি আইওএস অ্যাপ ছিল যা এই ওয়েব পরিষেবাটি গ্রাস করছিল এবং এটি সেখানে কাজ করেছিল worked

দ্রষ্টব্য: পোস্টের অনুরোধের সাথে ফাইল আপলোড করা হয়েছে।

আমি আরএসটি কনসোল নামে একটি গুগল ক্রোম প্লাগইন ব্যবহার করে উপরের কোডটি পরীক্ষা করেছি । Chrome ওয়েব স্টোরে "রেস্ট কনসোল" এর জন্য প্লাগইন অনুসন্ধান ইনস্টল করতে এবং ফলস্বরূপ আপনার প্রাপ্ত প্রথম প্লাগইন ইনস্টল করতে (সবুজ এবং নীচের নীচে নীচে)

আশাকরি এটা সাহায্য করবে!


1
ধন্যবাদ, এবং আপনি বলতে চাচ্ছেন যে এটি অর্জনের জন্য পরিষেবাদির মূল কিছু নেই?
নিক্সম্যাক

দেখা যায়নি .. আপনি সার্ভিস মডিউলের api.php ফাইল দেখতে পাবেন
subhojit777

drupal.org/files/endPoint_resources.png রিসোর্স টাইপের "ফাইল" এর মতো কিছু।
নিক্সম্যাক

দুঃখিত .. আমি ওয়েব সার্ভিস ব্যবহার করে ছবি আপলোড করতে রিসোর্স / ফাইল_রেসোর্স.সিমে কোডিংয়ের সহায়তা নিয়েছি .. আমি উল্লেখ করতে ভুলে গেছি যে আমি ওয়েব পরিষেবাটি তৈরি করার পরে এটি অনেক দিন হয়ে গেছে
subhojit777

একটি জিনিস আমি বলতে পারি যে আপনি নিজের ওয়েব পরিষেবা কলব্যাক থেকে প্রোগ্রামটিমে ওয়েব পরিষেবা কল করতে পারেন এবং $ ফাইল অ্যারে অর্জন করতে পারেন .. তবে এটি কি ওভারলোড হবে না? ওয়েব
সিরিসের

3

প্রথমত, আপনার শেষ পয়েন্টে ফাইল -> সংস্থান তৈরি করুন সক্ষম করে তা নিশ্চিত করে নিন।

এবং "ক্লায়েন্ট পক্ষ" তে আমি এরকম কিছু করেছি:

/**
 * Upload a file using services 3.X
 * 
 * @param the path of the local file
 * @return bool|int the fid of the file.
 *
 * 
 * With the fid you can attach this file in the node object before to be send.
 * ej.
 * $node->title = 'My remote node';
 * $fid = node_upload_image('/The_path/to_the/local_file.jpg');
 * $node->file_field[0] = array( 
 *    'fid' => $fid,
 *    'list' => 1,
 *    'data' => array()
 * );
 * // Other fields related with the node.
 * ...
 * 
 * // Sending the node.
 * $data = http_build_query($node, '', '&');
 * $response = drupal_http_request('myremotesite.com'. '/node', array(
 *   'Accept' => 'application/json', 
 *   'Cookie' => 'auth_cookie_info'
 * ), 'POST', $data);
 *
 * Done. 
 */
function node_upload_image($image_path) {
  $file = array(
    'filesize' => filesize($image_path),
    'filename' => basename($image_path),
    'file' => base64_encode(file_get_contents($image_path)),
    'uid'  => 1  // This should change it by the user who use the service.
  );

  $data = http_build_query($file, '', '&');
  $response = drupal_http_request('myremotesite.com/myservice-endpoint' . "/file", array('Accept' => 'application/json', 'Cookie' => 'auth_cookie_info'), "POST", $data);


  if ($response->code == 200) {
    return json_decode($response->data)->fid;
  }


  $this->error =  $response->status_message; 
  return false;
}

আমি এটি একটি অন্য দ্রুপাল থেকে করেছি, এবং ড্রুপাল 6 এর জন্য, ডি 7-র কোডটি পোর্ট করা সহজ হওয়া উচিত এবং আমি মনে করি এটি কীভাবে করবেন সে সম্পর্কে আপনি সাধারণ ধারণা পেয়ে যান।


2

নিয়মিত পরিষেবাদি 3 এর একটি 'ফাইল' শেষ পয়েন্ট থাকে। আপনি কেবল ফাইল তৈরি সক্ষম করতে পারেন এবং এর মতো কিছু পোস্ট করতে পারেন; ফাইলটি নিজেই বেস-64৪ এনকোডযুক্ত:

{
    "filename": "user993.jpg",
    "target_uri": "pictures/user993.jpg",
    "filemime": "image/jpeg",
    "file": "/9j/4AAQSkZJRgABAQELIiyoy0pUQRoFjAVVGAAMACiigBaKKKAP/2Q==...",
    "filesize": "5356"
}

2

কোনও চিত্র আপলোড করার জন্য আপনার কেবল একটি ফাইলের নাম এবং একটি ফাইল প্রয়োজন হবে - যা বেস64 এনকোডযুক্ত হবে।

আপনি এখানে আমার রেপো পরীক্ষা করতে পারেন, যেখানে আপনি ড্রুপাল Rest রেস্ট সার্ভিসেস এবং একটি উদাহরণ.এফপি ফাইলের সাথে কাজ করার জন্য একটি সাধারণ শ্রেণি খুঁজে পেতে পারেন যেখানে ক্লাসটি কীভাবে ব্যবহার করতে হবে তার কয়েকটি উদাহরণ রয়েছে। সেখানে আপনি কীভাবে কোনও চিত্র আপলোড করবেন তার একটি উদাহরণও খুঁজে পেতে পারেন, যা আমি সম্প্রতি যুক্ত করেছি।

https://github.com/flesheater/drupal_rest_server_class

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.