/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.jena.fuseki;
import java.io.IOException ;
import java.io.PrintStream ;
import java.net.HttpURLConnection ;
import java.net.URL ;
import java.util.ArrayList ;
import java.util.List ;
import java.util.UUID ;
import org.apache.jena.atlas.io.IO ;
public class FileSender {
// HttpClient 4.3 has MultipartEntity but the 4.2->4.3 change is less
// than trivial (and it seems some environment fix the HttpClient)
// so here's some code for testing support.
// MultipartEntity entity = new MultipartEntity();
// entity.addPart(...)
// HttpPost request = new HttpPost(url);
// request.setEntity(entity);
// HttpClient client = new DefaultHttpClient();
// HttpResponse response = client.execute(request);
class Entry {
String fileName ;
String content ;
String contentType ;
}
private List<Entry> items = new ArrayList<Entry>() ;
private String url ;
public FileSender(String url ) { this.url = url ; }
public void add(String filename, String content, String type) {
Entry e = new Entry() ;
e.fileName = filename ;
e.content = content ;
e.contentType = type ;
items.add(e) ;
}
public void send(String method) {
try {
String WNL = "\r\n" ; // Web newline
String boundary = UUID.randomUUID().toString() ;
HttpURLConnection connection = (HttpURLConnection)new URL(url).openConnection();
connection.setRequestMethod(method);
connection.setDoOutput(true) ;
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
try ( PrintStream ps = new PrintStream(connection.getOutputStream()) ; ) {
for ( Entry e : items ) {
ps.print("--" + boundary+WNL) ;
ps.print("Content-Disposition: form-data; name=\"FILE\"; filename=\""+e.fileName+"\""+WNL) ;
ps.print("Content-Type: "+e.contentType+";charset=UTF-8"+WNL) ;
ps.print(WNL);
ps.print(e.content) ;
ps.print(WNL);
}
ps.print("--" + boundary + "--"+WNL);
}
connection.connect();
int responseCode = connection.getResponseCode();
} catch (IOException ex) { IO.exception(ex); }
}
}