আরআরটিএস-এর মাধ্যমে ড্রুপাল 8-এ কীভাবে ফাইল প্রেরণ করা যায়


9

আমি RESTসমস্যা ছাড়াই নিবন্ধগুলি তৈরি করতে পারি । তবে কীভাবে ফাইল জমা দিতে হয় তা আমি বুঝতে পারি না।

ড্রুপাল 8-এর মাধ্যমে আমি কীভাবে ফাইল (চিত্রগুলি) জমা দেব REST?

হালনাগাদ:

REST UI - File: /file/{id}

Example image added in article: 
/admin/content/files -> /admin/content/files/usage/1

file {id} = 1?

Get file id 1:

curl --request GET --user admin:admin --header 'Accept: application/hal+json' http://d8.local/file/1
A fatal error occurred: No route found for "GET /file/1"

চিত্র পোস্ট করুন (সত্তা সামগ্রী ছাড়া):

curl --request POST --user admin:admin --header 'Content-type: application/hal+json' http://d8.local/entity/file
{"error":"No entity content received."}

কীভাবে তৈরি করব তা আমি খুঁজে পাচ্ছি না entity content



দেখে মনে হচ্ছে পোষ্টিং ফাইলগুলির জন্য বেশ কয়েকটি ব্লকার রয়েছে। একটি হ'ল ফাইলের বেস 64 এনকোডিং ( drupal.org/node/1927648 প্যাচ উপলব্ধ) এবং অন্যটি আপডেট ডিলিট ( drupal.org/node/2310307 প্যাচ উপলব্ধ) এর REST এন্ডপয়েন্টের অনুমতি রয়েছে । আমি এখনও এগুলির একটিও পরীক্ষা করি নি।
কুইনভিক্টোরিয়া

উত্তর:


4
  • কোরটিতে প্যাচ প্রয়োগ করুন: https://www.drupal.org/node/1927648
  • বিশ্রাম ইউআই ব্যবহার করে ইনস্টল করুন: drush dl restui-8.x-1.x
  • / অ্যাডমিন / কনফিগারেশন / পরিষেবা / বিশ্রামে যান এবং ফাইলটি সক্রিয় করুন /entity/file/{file}
  • অধীনে / প্রশাসক / লোক / অনুমতি সমস্ত প্রয়োজনীয় অনুমতি সেট করে
  • নিশ্চিত করুন যে ফাইল ফোল্ডারটি বিদ্যমান এবং তার যথাযথ অনুমতি রয়েছে
  • কমান্ড সরঞ্জাম বেস 64 ব্যবহার করে চিত্রটি এনকোড করুন
  • Drupal.url / সত্তা / ফাইল / থেকে পোস্ট করুন

    {"_links":
    {
      "type":{"href":"http://drupal.url/rest/type/file/file"}
    },
      "filename":[{"value":"input.jpg"}],
      "filemime":[{"value":"image/jpeg"}],
      "data":[{"value":"insert-output-from-base64-here"}] }

    এখানে চিত্র বর্ণনা লিখুন


সাফল্যের সাথে কোনও ফাইল আপলোড করার সময় আপনি একটি 201 পেয়ে যাবেন তবে ফাইলটি যেখানে রয়েছে সে সম্পর্কে কিছুই ফিরিয়ে দেওয়া হবে না। আমি প্রত্যাশা করব যে কোনও আইডি বা ফাইলের ফাইলটি ফিরে আসবে। ফাইলটি আপলোড হয়ে গেলে আমরা কীভাবে রেফারেন্স করব?
রনি

আমি EntityResource.phpআপনার প্যাচ এবং 117 লাইনের ভিত্তিতে সংশোধন করেছি , আমি সত্তার আইডি ফিরিয়েছি এবং কমপক্ষে আমার এখন কমপক্ষে একটি রেফারেন্স রয়েছে:$response = new ResourceResponse(NULL, 201,['id' => $entity->id()]);
রনি

@ রনি উত্তরের উপর ভিত্তি করে, আমি আশা করব যে ফাইলটি আপনার সাইটের ফাইল ফোল্ডারে থাকবে।
ব্লেক ফ্রেডেরিক

1
@ ব্ল্যাক ফ্রেডেরিক এটি আমাকে সত্যিই সহায়তা করে না যদিও আমার ডাটাবেসে ফাইলের একটি রেফারেন্স সংরক্ষণ করতে হবে। এই দৃশ্যের কথা ভাবুন: আমার কাছে একটি চিত্রের ক্ষেত্রের একটি সামগ্রী রয়েছে। একটি চিত্র তৈরি করার সময় সেই নোডের সাথে যুক্ত হওয়া দরকার। আপনি যখন ফাইলটি আপলোড করবেন, তখন ২০১৮ ব্যতীত আর কিছুই ফিরে আসে না ... আমি সেই নোডটিকে চিত্রটির দিকে কী দেখাব? এজন্য আমি $entity->id()প্রতিক্রিয়াটিতে যোগ করেছি । আমি সত্তার আইডিটি নোডে পাস করি এবং এখন সেই নোডটি চিত্র সম্পর্কে জানে
রনি

@ রনি - আমি নিজেই এটির মাধ্যমে কাজ করছি, তবে আমি লক্ষ্য করেছি যে ফাইলটি যখন সার্ভারটি সাফল্যের সাথে স্থানান্তরিত হয় তখন দ্রুপালের file_managedটেবিলে একটি অনুরূপ সারি যুক্ত হয় । এই সারি একটি অনন্য আছে fid। আমি বিশ্বাস করি যে পরবর্তী পদক্ষেপটি একটি চিত্র ক্ষেত্রের সাথে একটি নতুন নোড তৈরি fidকরা এবং ফাইলের সাথে চিত্রের ক্ষেত্রটি যুক্ত করতে ব্যবহার করুন। যদি আমি আপনাকে বুঝতে পারি, প্রশ্ন হল fidকখন কী ফিরে আসে না তা কীভাবে নির্ধারণ করা যায় । আমি আজ একটি দ্রুপাল থ্রেড থেকে লক্ষ্য করেছি যে REST UI এর ভবিষ্যতের সংস্করণ সম্পূর্ণ সত্তা ফিরিয়ে দেবে, তবে আপাতত কীভাবে এই সমস্যাটি সমাধান করবেন তা নিশ্চিত নই।
ব্লেক ফ্রেডেরিক

1
  1. RestUi এবং ফাইল সত্ত্বা মডিউলগুলি ইনস্টল এবং সক্ষম করুন ।
  2. 'অ্যাডমিন / কনফিগারেশন / পরিষেবাদি / বিশ্রাম' এ যান এবং জেসসন এবং হাল_জসন ফর্ম্যাটগুলির সাথে পোস্ট পদ্ধতির সাথে ফাইল রিসোর্স সক্ষম করুন
  3. পোস্টের অনুমতিগুলি সক্ষম করুন ফাইল সংস্থান @ প্রশাসক / লোক / অনুমতিতে পোষ্ট অ্যাক্সেস করুন
  4. পোস্ট ইউআরএল - http: //d8.local/entity/file? _ ফর্ম্যাট = হাল_জসন
  5. পোস্ট ডেটার ফর্ম্যাট অনুসরণ করে (চিত্রের ডেটার জন্য বেস 64 এনকোডার ব্যবহার করুন)

    { "_links": { "type": { "href": "http://d8.local/rest/type/file/image" } }, "filename": [ { "value": "favicon-32x32.png" } ], "filemime": [ { "value": "image/png" } ], "filesize": [ { "value": "488" } ], "type": [ { "target_id": "image" } ], "data": [ { "value": "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAkUExURUxpcSOq4SOq4SOq4SOq4SOq4SOq4SOq4SOq4SOq4SOq4SOq4U0m8UcAAAAMdFJOUwD/EvAm2qhTPMRrkl4CMYAAAAE1SURBVCjPXZG/S8NQEMePR7Ehnb48khC7BEFFnYJD6/aWOLilVBy6WBVc648/oCii1KlFKDrFwV2tqH+edy9Rk7zh8e7Dfe++944oP5dUO59RDQyPqrFK/WqKCzxUwA30oJyymervlVK8PsVBOd85hh6pyflfhwXg024cjguwBqCjhsCsSOAn+k4MBGpUWAB6Tb6W1VxAgv+MfcPgWUBgazjxoYwlQLrsmBa6MhbH3hep2yu6QJuowWL9Yfs1U4QRSbWOjRts0DMCdEbqjl8s1kYkPqmX7YGRfgy4aJe2IB+0wZJI2s7ojEGbWtJejL1aL55h+wGDVWTWix47+cAug6kAycjs+LkkjFzku0h6dC3D01KxCmdOLrt7pyQ0+Z/tRXT/eEr0dvL7y6zkrbhPtYVPrOAHKZQ53IyepQMAAAAASUVORK5CYII=" } ] }

  6. অনুমোদনের সেট করুন, শিরোনামে বিষয়বস্তুর প্রকার। (অনুমোদন: বেসিক xxxxxxxx বিষয়বস্তুর ধরণ: অ্যাপ্লিকেশন / হাল + জেসন)

  7. নিম্নলিখিত পিএইচপি কার্ল ব্যবহার করুন

    $curl = curl_init();
    curl_setopt_array($curl, array(
      CURLOPT_URL => "http://d8.local/entity/file?_format=hal_json",
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => "",
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 30,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => "POST",
      CURLOPT_POSTFIELDS => "{\n  \"_links\": {\n    \"type\": {\n      \"href\": \"http://d8.local/rest/type/file/image\"\n    }\n  },\n  \"filename\": [\n    {\n      \"value\": \"favicon-32x32.png\"\n    }\n  ],\n  \"filemime\": [\n    {\n      \"value\": \"image/png\"\n    }\n  ],\n  \"filesize\": [\n    {\n      \"value\": \"488\"\n    }\n  ],\n  \"type\": [\n    {\n      \"target_id\": \"image\"\n    }\n  ],\n  \"data\": [\n    {\n      \"value\": \"iVBORw0KGgoAAAANSUhEUgAAACAAAAAgBAMAAACBVGfHAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAkUExURUxpcSOq4SOq4SOq4SOq4SOq4SOq4SOq4SOq4SOq4SOq4SOq4U0m8UcAAAAMdFJOUwD/EvAm2qhTPMRrkl4CMYAAAAE1SURBVCjPXZG/S8NQEMePR7Ehnb48khC7BEFFnYJD6/aWOLilVBy6WBVc648/oCii1KlFKDrFwV2tqH+edy9Rk7zh8e7Dfe++944oP5dUO59RDQyPqrFK/WqKCzxUwA30oJyymervlVK8PsVBOd85hh6pyflfhwXg024cjguwBqCjhsCsSOAn+k4MBGpUWAB6Tb6W1VxAgv+MfcPgWUBgazjxoYwlQLrsmBa6MhbH3hep2yu6QJuowWL9Yfs1U4QRSbWOjRts0DMCdEbqjl8s1kYkPqmX7YGRfgy4aJe2IB+0wZJI2s7ojEGbWtJejL1aL55h+wGDVWTWix47+cAug6kAycjs+LkkjFzku0h6dC3D01KxCmdOLrt7pyQ0+Z/tRXT/eEr0dvL7y6zkrbhPtYVPrOAHKZQ53IyepQMAAAAASUVORK5CYII=\"\n    }\n  ]\n}",
      CURLOPT_HTTPHEADER => array(
        "authorization: Basic " .base64_encode('User:Password'),
        "cache-control: no-cache",
        "content-type: application/hal+json"
      ),
    ));
    
    $response = curl_exec($curl);
    $err = curl_error($curl);
    
    curl_close($curl);
    
    if ($err) {
      echo "cURL Error #:" . $err;
    } else {
      echo $response;
    }
  8. এখানে যান এবং ফাইলটি পরীক্ষা করুন - অ্যাডমিন / সামগ্রী / ফাইল


0

আপনি কোন শেষ পয়েন্টগুলি ব্যবহার করতে পারেন তা দেখতে আপনি বিশ্রাম UI মডিউলটি ইনস্টল করতে পারেন।

দ্রুপাল 8 এর আরএসটি মডিউলটির জন্য খুব প্রাথমিক ইউজার ইন্টারফেস।

যেমন এটি আপনাকে কনফিগার করতে দেয় কী কী প্রমাণীকরণের মাধ্যমে কোন সংস্থানগুলি উদ্ভাসিত হয়।

অনুগ্রহ করে নোট করুন যে ইউআই বর্তমানে ভুল শেষ পয়েন্টগুলি সরবরাহ করে: - বিশ্রামের ইউআরআই পথগুলি ক্যানোনিকাল পাথগুলিতে পরিবর্তিত হয়েছে


ফাইলের জন্য বিশদ ইউআই শেষ পয়েন্ট: / ফাইল / {আইডি}} আমি প্রশ্ন আপডেট করেছি।
ব্যবহারকারী32063
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.