Comments (7)
I came across this too, and also implemented it myself.
To aid any future visitors, I have written up a gist which should serve as a good template:
https://gist.github.com/jhwgh1968/3cd073677f74506474bbcbcadeffb0ee
from ureq.
FYI, the multipart
crate is unmaintained: https://rustsec.org/advisories/RUSTSEC-2023-0050.html
I'd love to see ureq
to gain builtin support for multipart so we don't need to depend on an unmaintained crate.
See also PyO3/maturin#1858
from ureq.
i implemented a multipart toolkit for ureq:
ureq_multipart
usage:
`
use ureq_multipart::MultipartBuilder;
let (content_type,data) = MultipartBuilder::new()
.add_file("test","/home/feiy/Desktop/1.txt").unwrap()
.finish().unwrap();
let resp: Value = req
.post(&service_url)
.set("Content-Type", &content_type)
.send_bytes(&data)?
.into_json()?
`
from ureq.
@elasmojs there isn't any built in support for multipart forms. Constructing the multipart is easy enough though – I was briefly looking through crates.io, but can't find a framework agnostic impl. Could be I didn't look hard enough, or that that someone really ought to build a generic multipart builder.
I think the API should look something like this:
let multi = MultipartBuilder::new()
.addText("Some text") // Content-Disposition: form-data; name="text"
.addFile("myfile.txt") // Content-Disposition: form-data; name="file1"; filename="myfile.txt"
.build().unwrap(); // delay io errors to here
let res = ureq::post("https://my-fine.server")
.set("content-length", multi.len())
.set("content-type", multi.content_type()) // multipart/form-data; boundary=----90519140972754266
.send(multi.into_reader());
from ureq.
@algesten , thank you for the response. I have solved this by using https://crates.io/crates/multipart
from ureq.
@elasmojs can you provide an example, please?
I'm not so familiar with web stuff, so I ended up switching to reqwest
since it supports multipart forms out of the box. Just curious how it can be achieved with ureq
+ multipart
.
from ureq.
i have public ureq_multipart 1.1 ,add ureq request send multipart method:
use ureq_multipart::MultipartRequest;
let resp: Value = req
.post(&service_url)
.send_multipart_file("name","&/home/feiy/Desktop/1.txt")?
.into_json()?
from ureq.
Related Issues (20)
- Peer misbehaved: `ResumptionOfferedWithVariedCipherSuite`
- Feature request: read `http_proxy` environment variable as proxy config HOT 1
- WebAssembly support HOT 4
- Respect `NO_PROXY` environment variable. HOT 3
- Power9 support HOT 2
- AgentBuilder should be clonable HOT 3
- Sometimes fails to retrieve a response when the server doesn't read the body HOT 9
- Export "cookie" crate
- Updating `http` was a breaking change HOT 3
- How to handle "native_tls::HandshakeError::WouldBlock"? HOT 3
- Replace httpbin.org in all examples and tests HOT 5
- Update rustls for RISCV64 support HOT 5
- Trust invalid certificate convenience function HOT 3
- Set local address to bind a specific interface HOT 2
- [Bug] In some case return empty "Content-Length" response header HOT 3
- Timeout not working when having packet losses HOT 1
- Support Multipart Forms HOT 1
- Timeout not always respected HOT 5
- Invalid transformation to http::Response<Vec<u8>> for non utf8 response bodies HOT 3
- Example of requesting a continuous stream HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ureq.