Struct async_graphql::types::Upload [−][src]
pub struct Upload(_);
Expand description
Uploaded file
Reference: https://github.com/jaydenseric/graphql-multipart-request-spec
Graphql supports file uploads via multipart/form-data
.
Enable this feature by accepting an argument of type Upload
(single file) or
Vec<Upload>
(multiple files) in your mutation like in the example blow.
Example
use async_graphql::*; struct MutationRoot; #[Object] impl MutationRoot { async fn upload(&self, ctx: &Context<'_>, file: Upload) -> bool { println!("upload: filename={}", file.value(ctx).unwrap().filename); true } }
Example Curl Request
Assuming you have defined your MutationRoot like in the example above,
you can now upload a file myFile.txt
with the below curl command:
curl 'localhost:8000' \
--form 'operations={
"query": "mutation ($file: Upload!) { upload(file: $file) }",
"variables": { "file": null }}' \
--form 'map={ "0": ["variables.file"] }' \
--form '0=@myFile.txt'
Implementations
impl Upload
[src]
impl Upload
[src]pub fn value(&self, ctx: &Context<'_>) -> Result<UploadValue>
[src]
pub fn value(&self, ctx: &Context<'_>) -> Result<UploadValue>
[src]Get the upload value.
Trait Implementations
impl Type for Upload
[src]
impl Type for Upload
[src]fn create_type_info(registry: &mut Registry) -> String
[src]
fn create_type_info(registry: &mut Registry) -> String
[src]Create type information in the registry and return qualified typename.
fn qualified_type_name() -> String
[src]
fn qualified_type_name() -> String
[src]Qualified typename.
fn introspection_type_name(&self) -> Cow<'static, str>
[src]
fn introspection_type_name(&self) -> Cow<'static, str>
[src]Introspection type name Read more
Auto Trait Implementations
impl RefUnwindSafe for Upload
impl Send for Upload
impl Sync for Upload
impl Unpin for Upload
impl UnwindSafe for Upload
Blanket Implementations
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]pub fn borrow_mut(&mut self) -> &mut T
[src]
pub fn borrow_mut(&mut self) -> &mut T
[src]Mutably borrows from an owned value. Read more
impl<T> FutureExt for T
[src]
impl<T> FutureExt for T
[src]fn with_context(self, otel_cx: Context) -> WithContext<Self>
[src]
fn with_context(self, otel_cx: Context) -> WithContext<Self>
[src]fn with_current_context(self) -> WithContext<Self>
[src]
fn with_current_context(self) -> WithContext<Self>
[src]impl<T> Instrument for T
[src]
impl<T> Instrument for T
[src]fn instrument(self, span: Span) -> Instrumented<Self>
[src]
fn instrument(self, span: Span) -> Instrumented<Self>
[src]Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
fn in_current_span(self) -> Instrumented<Self>
[src]
fn in_current_span(self) -> Instrumented<Self>
[src]impl<T> Instrument for T
[src]
impl<T> Instrument for T
[src]fn instrument(self, span: Span) -> Instrumented<Self>
[src]
fn instrument(self, span: Span) -> Instrumented<Self>
[src]Instruments this type with the provided Span
, returning an
Instrumented
wrapper. Read more
fn in_current_span(self) -> Instrumented<Self>
[src]
fn in_current_span(self) -> Instrumented<Self>
[src]impl<T> Same<T> for T
impl<T> Same<T> for T
type Output = T
type Output = T
Should always be Self
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
pub fn vzip(self) -> V
impl<T> WithSubscriber for T
[src]
impl<T> WithSubscriber for T
[src]fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
[src]
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
[src]Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
fn with_current_subscriber(self) -> WithDispatch<Self>
[src]
fn with_current_subscriber(self) -> WithDispatch<Self>
[src]Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more