Skip to content

Commit f21ad54

Browse files
committed
Fix for posting multiple files
1 parent 22d6838 commit f21ad54

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

src/com/loopj/android/http/RequestParams.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,15 +187,19 @@ HttpEntity getEntity() {
187187
}
188188

189189
// Add file params
190+
int currentIndex = 0;
191+
int lastIndex = fileParams.entrySet().size() - 1;
190192
for(ConcurrentHashMap.Entry<String, FileWrapper> entry : fileParams.entrySet()) {
191193
FileWrapper file = entry.getValue();
192194
if(file.inputStream != null) {
195+
boolean isLast = currentIndex == lastIndex;
193196
if(file.contentType != null) {
194-
multipartEntity.addPart(entry.getKey(), file.getFileName(), file.inputStream, file.contentType);
197+
multipartEntity.addPart(entry.getKey(), file.getFileName(), file.inputStream, file.contentType, isLast);
195198
} else {
196-
multipartEntity.addPart(entry.getKey(), file.getFileName(), file.inputStream);
199+
multipartEntity.addPart(entry.getKey(), file.getFileName(), file.inputStream, isLast);
197200
}
198201
}
202+
currentIndex++;
199203
}
200204

201205
entity = multipartEntity;

src/com/loopj/android/http/SimpleMultipartEntity.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,11 @@ public void addPart(final String key, final String value) {
9393
}
9494
}
9595

96-
public void addPart(final String key, final String fileName, final InputStream fin){
97-
addPart(key, fileName, fin, "application/octet-stream");
96+
public void addPart(final String key, final String fileName, final InputStream fin, final boolean isLast){
97+
addPart(key, fileName, fin, "application/octet-stream", isLast);
9898
}
9999

100-
public void addPart(final String key, final String fileName, final InputStream fin, String type){
100+
public void addPart(final String key, final String fileName, final InputStream fin, String type, final boolean isLast){
101101
writeFirstBoundaryIfNeeds();
102102
try {
103103
type = "Content-Type: "+type+"\r\n";
@@ -110,6 +110,8 @@ public void addPart(final String key, final String fileName, final InputStream f
110110
while ((l = fin.read(tmp)) != -1) {
111111
out.write(tmp, 0, l);
112112
}
113+
if(!isLast)
114+
out.write(("\r\n--" + boundary + "\r\n").getBytes());
113115
out.flush();
114116
} catch (final IOException e) {
115117
e.printStackTrace();
@@ -122,9 +124,9 @@ public void addPart(final String key, final String fileName, final InputStream f
122124
}
123125
}
124126

125-
public void addPart(final String key, final File value) {
127+
public void addPart(final String key, final File value, final boolean isLast) {
126128
try {
127-
addPart(key, value.getName(), new FileInputStream(value));
129+
addPart(key, value.getName(), new FileInputStream(value), isLast);
128130
} catch (final FileNotFoundException e) {
129131
e.printStackTrace();
130132
}

0 commit comments

Comments
 (0)