我目前正在设计一个系统,用于从应用程序将多个图像上传到服务器.这些文件将存储在本地设备上,当前的想法是将它们分成块,然后将它们逐块上传到服务器,在上传下一个之前等待成功消息.
这个过程对于用户来说应该是无缝的,他们应该按下按钮来提交所有图像,然后能够关闭应用程序并使其在后台继续.在iOS 7中,我看到您可以将上传内容传递给新的NSURLSession API,并让它独立于您的应用程序处理上传任务.
我想知道是否有人知道这种转移是多么可靠.如果我将整个图像传递给它,如果互联网连接中途下降会发生什么?后台传输服务是否会在以后重试?我们的想法是,我们可以上传一个图像,如果它在一半时间内失败,那么我们可以在以后重新开始连接时从那一点继续.
我们的一个想法是将文件拆分为块,然后将所有块作为单独的NSURLSessionUploadTasks传递,并假设它们最终都将被发送到服务器.
另一个是发送第一个块使用:
uploadTaskWithRequest:fromData:completionHandler:
Run Code Online (Sandbox Code Playgroud)
然后在completitionHandler中发送下一个块.我的问题是,如果在后台,下一个块将拥有它
@property BOOL discretionary = true
Run Code Online (Sandbox Code Playgroud)
这意味着它只会在插入时通过WiFi发送.我需要这可以在所有网络上工作并能够应对中断.
我不想要任何代码,只是建议这是否是实现这一目标的正确方法.
我正在开发一个spring mvc应用程序,我想在我的控制器中处理多部分请求.在请求我MultiPartFile 也通过,目前我正在使用@RequestParam文件paramaeter,方法看起来像,
@RequestMapping(method = RequestMethod.POST)
public def save(
@ModelAttribute @Valid Product product,
@RequestParam(value = "image", required = false) MultipartFile file) {
.....
}
Run Code Online (Sandbox Code Playgroud)
上面的代码在我的服务中运行良好,文件正在服务器端.现在在某处我看到,如果文件需要使用@RequestPart注释而不是@RequestParam.@RequestParam用于文件有什么不对吗?或者它将来可能会导致任何错误?
我正在尝试将图像上传到服务器以及从表单收集的一些JSON数据.
服务器有身份验证.
METHOD: post
HEADERS:
Authorization Basic d2Vic2VydmljZTpyM05hdTE3Rw==
Content-Type multipart/form-data;boundary=xxxxxxxx
BODY:
--xxxxxxxx
Content-Disposition: form-data; name="jsonFile"
Content-Type: application/json
{"model":"Premium","deviceLongitude":4.79337638,"pseudo":"nickname","deviceLatitude":45.7671507,"year":"2005","email":"email@mail.com","deviceLocale":"fr_FR","title":"my picture"}
--xxxxxxxx
Content-Disposition: form-data; name="imgName"
Content-Type: image/jpeg
//Image data array
/9j/4AAQSkZJRgABAQAAAQABAAD/4QBYRXhpZgAATU0AKgAAAAgAAgESAAMAAAAB
AAEAAIdpAAQAAAABAAAAJgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAB4KAD
AAQAAAABAAACgAAAAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEB
AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEB
AQEBAQEBAQH/wAARCAKAAeADAREAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAA
AAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF
--xxxxxxxx
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Python中的请求发送多部分/相关消息.该脚本看起来很简单,只是请求似乎只允许发送多部分/表单数据消息,尽管他们的文档没有明确说明这种或那种方式.
我的用例是发送带有附件的肥皂.我可以提供一个字典,其中包含两个文件,其内容是测试soap消息,以及我正在尝试发送的测试文档.第一个包含带有所有指令的soap消息,第二个是实际文档.
但是,如果我没有指定标头值,则在使用files选项时,请求似乎只使用multipart/form-data.但是,如果我在尝试指定不同的多部分类型时指定标题,则请求似乎不会添加到mime边界信息中.
url = 'http://10.10.10.90:8020/foo'
headers = {'content-type': 'multipart/related'}
files = {'submission': open('submission_set.xml', 'rb'), 'document': open('document.txt', 'rb')}
response = requests.post(url, data=data, headers=headers)
print response.text
Run Code Online (Sandbox Code Playgroud)
有没有办法使用请求完成此操作?还是我应该看到另一种工具?
您好AndroidUploaders,
我已经给出了回答使用OkHttp在multipart中上传一个大文件,但我坚持使用多个图像上传.
我想一次动态上传1到10张图片.
RequestBody requestBody = new MultipartBuilder()
.type(MultipartBuilder.FORM)
.addFormDataPart(KEY_PHOTO_CAPTION, photoCaption)
.addFormDataPart(KEY_FILE, "profile.png", RequestBody.create(MEDIA_TYPE_PNG, sourceFile))
.build();
Run Code Online (Sandbox Code Playgroud)
我ArrayList的PhotoCaption具有类captionPhoto和urlPhoto那么,如何可以addFormDataPart()
我想循环并调用这个函数多次ArrayList大小.
addFormDataPart()是否有动态使用的解决方案?
我正在使用 pytest 来测试 FastAPI 端点,该端点以二进制格式输入图像,如
@app.post("/analyse")
async def analyse(file: bytes = File(...)):
image = Image.open(io.BytesIO(file)).convert("RGB")
stats = process_image(image)
return stats
Run Code Online (Sandbox Code Playgroud)
启动服务器后,我可以通过运行调用来成功手动测试端点 requests
import requests
from requests_toolbelt.multipart.encoder import MultipartEncoder
url = "http://127.0.0.1:8000/analyse"
filename = "./example.jpg"
m = MultipartEncoder(
fields={'file': ('filename', open(filename, 'rb'), 'image/jpeg')}
)
r = requests.post(url, data=m, headers={'Content-Type': m.content_type}, timeout = 8000)
assert r.status_code == 200
Run Code Online (Sandbox Code Playgroud)
但是,以以下形式设置测试:
from fastapi.testclient import TestClient
from requests_toolbelt.multipart.encoder import MultipartEncoder
from app.server import app
client = TestClient(app)
def test_image_analysis():
filename = "example.jpg"
m = MultipartEncoder( …Run Code Online (Sandbox Code Playgroud) 使用Retrofit 2.0.1,我在Android App中定义的API接口中有一个调用函数:
@Multipart
@POST("api.php")
Call<ResponseBody> doAPI(
@Part("lang") String lang,
@Part("file\"; filename=\"image.jpg") RequestBody file
);
Run Code Online (Sandbox Code Playgroud)
我发送这样的请求:
Call call = service.doAPI("eng",imageFile);
其中imageFile是一个RequestBody与创建File对象.上传图片部分没有问题,而@Part("lang") String lang部分在服务器中得到额外的报价.
在PHP方面,它写如下:
$lang = trim($_POST['lang']);
Run Code Online (Sandbox Code Playgroud)
返回"eng".为什么在字符串周围有一个额外的双引号?
当然我可以删除尾随和引导双引号,但这样做很奇怪
任何一个可以解释什么是优势 Base64,以及Multipart
我知道Multipart比
Base64... 更快
但是仍然有很多开发人员正在使用Base64 ...我研究了这两个文档,但我不清楚,因为我的英语不好.
大家好,我想通过 Retrofit2 发布图像和其他数据。我正在用一张图像发送数据。
所有其他信息都在存储,但我的图像没有存储。当我与邮递员一起测试时,它可以工作。
请指导我在我的代码中缺少的地方
这是有效的邮递员代码片段
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
RequestBody body = RequestBody.create(mediaType, "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\ntest6@gmail.com\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"password\"\r\n\r\n123456\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nTest\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"phone\"\r\n\r\n1234567890\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"image\"; filename=\"03.JPG\"\r\nContent-Type: image/jpeg\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--");
Request request = new Request.Builder()
.url("https://"url"/api/v1/sign-up")
.post(body)
.addHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW")
.addHeader("cache-control", "no-cache")
.addHeader("postman-token", "2dd038d9-5f52-fcd0-9331-445eaf35c230")
.build();
Response response = client.newCall(request).execute();
Run Code Online (Sandbox Code Playgroud)
以下是邮递员请求图片:
这是我的改造 api
@Multipart
@POST("sign-up")
Call<SignUpResponse> getSignUpResponse(
@Part("email") RequestBody email,
@Part("password") RequestBody password,
@Part("name") RequestBody name,
@Part("phone") RequestBody phone,
@Part MultipartBody.Part image
//@Part("image") RequestBody image // i have …Run Code Online (Sandbox Code Playgroud) 我通过Python email/ 发送的电子邮件有一个奇怪的问题smtplib。
我正在尝试撰写包含以下内容的电子邮件:
MIME结构的设置如下:
multipart/mixed
multipart/alternative
text/plain
multipart/related
text/html
image/png - inline
application/pdf - attachment
Run Code Online (Sandbox Code Playgroud)
除 Windows 10邮件客户端外,我测试过的所有邮件客户端{在Android上的BlueMail,iOS邮件客户端,Roundcube}似乎都可以正常工作。出于某种原因,Windows 10内置邮件客户端似乎可以很好地显示嵌入式图像,但是看不到其他附件的痕迹。
我可以在Internet上找到的有限信息表明这是Windows 10邮件客户端的错误,但是我个人在此客户端中收到了其他电子邮件,包括内联附件和附件,它们显示得很好-因此,显然是某种可行的解决方法/替代消息结构。
因此,我的问题是:如何更改此邮件的格式,使其在所有相关的邮件客户端中正确显示?
我正在用Python编写这样的电子邮件:
message = MIMEMultipart("mixed")
message["From"] = ...
.
.
.
bodyText = "..."
bodyHTML = "..."
mailFrom = "..."
targetEmail = "..."
imageContent = ...
messageBody = MIMEMultipart("alternative")
messageBody.attach(MIMEText(bodyText, "plain"))
messageBodyHTML = MIMEMultipart("related")
messageBodyHTML.attach(MIMEText(bodyHTML, "html"))
messageImage = MIMEImage(imageContent)
messageImage.add_header("Content-Disposition", 'inline; filename="..."')
messageImage.add_header("Content-ID", "<id used in html body>")
messageBodyHTML.attach(messageImage) …Run Code Online (Sandbox Code Playgroud)