我已经写了一段时间的iPhone应用程序,将数据发送到服务器,接收数据(通过HTTP协议),而不用考虑太多.大多数情况下,我理论上熟悉流程,但我不太熟悉的部分是HTTP多部分请求.我知道它的基本结构,但它的核心是我.
似乎每当我发送不同于纯文本(如照片,音乐)的东西时,我都必须使用多部分请求.有人可以简单地向我解释为什么使用它以及它的优点是什么?
如果我使用它,为什么以这种方式发送照片更好?
我想知道是否有人可以与我分享一个包含以下内容的multipart/form-data示例:
在Apache Commons HttpClient版本3.x的时代,可以制作多部分/表单数据POST请求(2004年的一个例子).不幸的是,在HttpClient 4.0版本中不再可能.
对于我们的核心活动"HTTP",multipart有点超出范围.我们喜欢使用由其他项目维护的多部分代码,但是我不知道.几年前我们尝试将多部分代码移动到commons-codec,但我没有在那里起飞.Oleg最近提到了另一个具有多部分解析代码的项目,可能对我们的多部分格式代码感兴趣.我不知道目前的情况.(http://www.nabble.com/multipart-form-data-in-4.0-td14224819.html)
是否有人知道任何允许我编写可以发出multipart/form-data POST请求的HTTP客户端的Java库?
背景:我想使用Zoho Writer的远程API.
我正在开发一个iPhone应用程序,它可以生成包含多个图像文件的多部分HTTP请求.
看起来在服务器端发生的事情是,其中一个图像正在被正确解析,但其他两个文件则没有.
任何人都可以发布包含多个图像文件的示例HTTP多部分请求吗?
我一直在使用python中的电子邮件模块,但我希望能够知道如何嵌入包含在html中的图像.
所以,例如,如果身体是这样的
<img src="../path/image.png"></img>
Run Code Online (Sandbox Code Playgroud)
我想将image.png嵌入到电子邮件中,该src
属性应该替换为content-id
.有人知道怎么做这个吗?
我正在尝试使用go将图像从我的计算机上传到网站.通常,我使用bash脚本将文件和密钥发送到服务器:
curl -F "image"=@"IMAGEFILE" -F "key"="KEY" URL
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我正在尝试将此请求转换为我的golang程序.
http://matt.aimonetti.net/posts/2013/07/01/golang-multipart-file-upload-example/
我尝试了这个链接和许多其他链接,但是,对于我尝试的每个代码,来自服务器的响应是"没有图像发送",我不知道为什么.如果有人知道上面的例子发生了什么.
谢谢
使用案例:用户点击网页上的链接 - 繁荣!加载位于其文件夹中的文件.
我尝试使用multipart/mixed消息打包文件,但它似乎只适用于Firefox
这就是我的回答:
HTTP/1.0 200 OK
Connection: close
Date: Wed, 24 Jun 2009 23:41:40 GMT
Content-Type: multipart/mixed;boundary=AMZ90RFX875LKMFasdf09DDFF3
Client-Date: Wed, 24 Jun 2009 23:41:40 GMT
Client-Peer: 127.0.0.1:3000
Client-Response-Num: 1
MIME-Version: 1.0
Status: 200
--AMZ90RFX875LKMFasdf09DDFF3
Content-type: image/jpeg
Content-transfer-encoding: binary
Content-disposition: attachment; filename="001.jpg"
<< here goes binary data >>--AMZ90RFX875LKMFasdf09DDFF3
Content-type: image/jpeg
Content-transfer-encoding: binary
Content-disposition: attachment; filename="002.jpg"
<< here goes binary data >>--AMZ90RFX875LKMFasdf09DDFF3
--AMZ90RFX875LKMFasdf09DDFF3--
Run Code Online (Sandbox Code Playgroud)
谢谢
PS否,压缩文件不是一个选项
我正在使用javax.mail开发客户端邮件来读取邮箱内的邮件:
Properties properties = System.getProperties();
properties.setProperty("mail.store.protocol", "imap");
try {
Session session = Session.getDefaultInstance(properties, null);
Store store = session.getStore("pop3");//create store instance
store.connect("pop3.domain.it", "mail.it", "*****");
Folder inbox = store.getFolder("inbox");
FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
inbox.open(Folder.READ_ONLY);//set access type of Inbox
Message messages[] = inbox.search(ft);
String mail,sub,bodyText="";
Object body;
for(Message message:messages) {
mail = message.getFrom()[0].toString();
sub = message.getSubject();
body = message.getContent();
//bodyText = body.....
}
} catch (Exception e) {
System.out.println(e);
}
Run Code Online (Sandbox Code Playgroud)
我知道该方法getContent()
返回一个对象,因为内容可能是a String
,a MimeMultiPart
,a SharedByteArrayInputstream
和其他(我认为)......有没有办法在消息正文中获取文本?谢谢!!
我正在编写一个脚本,将文件上传到需要多部分请求的cgi脚本,例如HTML页面上的表单.这boundary
是一个唯一标记,用于注释请求正文中的文件内容.这是一个示例正文:
--BOUNDARY
Content-Disposition: form-data; name="paramname"; filename="foo.txt"
Content-Type: text/plain
... file contents here ...
--BOUNDARY--
Run Code Online (Sandbox Code Playgroud)
由于boundary
显而易见的原因,不能出现在文件内容中.
我该怎么做才能创造一个独特的边界?我应该生成一个随机字符串,检查它是否在文件内容中,如果是,则生成一个新的,冲洗并重复,直到我有一个唯一的字符串?或者"相当随机的令牌"(比如时间戳,进程ID等的组合)是否足够?
我想使用multipart/mixed创建HTTP响应,但我不确定哪些浏览器支持它; 从客户的角度来看,如果它听起来很方便.说实话,我不需要具体的内容类型.我只想在同一个响应中传输多个文件; 也许还有更多使用的内容类型.
multipart ×10
http ×5
java ×2
mime ×2
attachment ×1
browser ×1
curl ×1
email ×1
file ×1
file-upload ×1
go ×1
html ×1
http-headers ×1
javax.mail ×1
python ×1