uploadReducer.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import { resolveComponentProps } from '@mui/base';
  2. import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';
  3. import { graphqlRequestBaseQuery } from "@rtk-query/graphql-request-base-query";
  4. var FormData = require('form-data');
  5. const prepareHeaders = (headers, { getState }) => {
  6. const token = getState().auth.token;
  7. if (token) {
  8. headers.set("Authorization", `Bearer ${token}`);
  9. headers.set("Content-Type", "multipart/form-data");
  10. }
  11. return headers;
  12. }
  13. const uploadAPI = createApi({
  14. reducerPath: 'uploadAPI',
  15. baseQuery: fetchBaseQuery(
  16. {
  17. baseUrl: "http://shop-roles.node.ed.asmer.org.ua/",
  18. prepareHeaders
  19. }),
  20. endpoints: (builder) => ({
  21. uploadSingleFile: builder.mutation({
  22. async query(file) {
  23. var formData = new FormData();
  24. let fileData = await file.data.arrayBuffer();
  25. formData.append('photo', fileData);
  26. /*var reader = new FileReader();
  27. const readFile = (event) => event.target.result;
  28. reader.addEventListener("loadend", readFile);
  29. reader.readAsBinaryString(file.data);
  30. <input type="file" name="photo" id='photo' value={file.url} />
  31. let form = (
  32. <form action="/upload" method="post" enctype="multipart/form-data" id='form'>
  33. <input type="number" name="photo1" id='photo1' value={5} />
  34. </form>
  35. );
  36. */
  37. let res =
  38. {
  39. action:"/upload",
  40. //url: 'upload',
  41. method: 'POST',
  42. credentials: 'include',
  43. body: formData,
  44. };
  45. return res;
  46. },
  47. }),
  48. }),
  49. });
  50. export const { useUploadSingleFileMutation } = uploadAPI;
  51. export { uploadAPI }