Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void main(String[] args) throws Exception
- {
- String fileName = "test.avi";
- File file = new File(fileName);
- String serverResponse = null;
- HttpParams params = new BasicHttpParams();
- params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, true);
- HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
- HttpClient client = new DefaultHttpClient(params);
- HttpPut put = new HttpPut("http://localhost:8080/" + fileName);
- FileEntity fileEntity = new FileEntity(file, "binary/octet-stream");
- put.setEntity(fileEntity);
- HttpResponse response = client.execute(put);
- HttpEntity entity = response.getEntity();
- if (entity != null)
- {
- serverResponse = EntityUtils.toString(entity);
- System.out.println(serverResponse);
- }
- }
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.io.File;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import javax.swing.JButton;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- import javax.swing.JProgressBar;
- import org.apache.http.HttpEntity;
- import org.apache.http.HttpResponse;
- import org.apache.http.HttpVersion;
- import org.apache.http.client.HttpClient;
- import org.apache.http.client.methods.HttpPut;
- import org.apache.http.impl.client.DefaultHttpClient;
- import org.apache.http.params.BasicHttpParams;
- import org.apache.http.params.HttpParams;
- import org.apache.http.params.HttpProtocolParams;
- import org.apache.http.util.EntityUtils;
- public class ApplicationView implements ActionListener
- {
- File file = new File("C:/Temp/my-upload.avi");
- JProgressBar progressBar = null;
- public ApplicationView()
- {
- super();
- }
- public void createView()
- {
- JFrame frame = new JFrame("File Upload with progress bar - Example");
- frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setBounds(0, 0, 300, 200);
- frame.setVisible(true);
- progressBar = new JProgressBar(0, 100);
- progressBar.setBounds(20, 20, 200, 30);
- progressBar.setStringPainted(true);
- progressBar.setVisible(true);
- JButton button = new JButton("upload");
- button.setBounds(progressBar.getX(),
- progressBar.getY() + progressBar.getHeight() + 20,
- 100,
- 40);
- button.addActionListener(this);
- JPanel panel = (JPanel) frame.getContentPane();
- panel.setLayout(null);
- panel.add(progressBar);
- panel.add(button);
- panel.setVisible(true);
- }
- public void actionPerformed(ActionEvent e)
- {
- try
- {
- sendFile(this.file, this.progressBar);
- }
- catch (Exception ex)
- {
- System.out.println(ex.getLocalizedMessage());
- }
- }
- private void sendFile(File file, JProgressBar progressBar) throws Exception
- {
- String serverResponse = null;
- HttpParams params = new BasicHttpParams();
- params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, true);
- HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
- HttpClient client = new DefaultHttpClient(params);
- HttpPut put = new HttpPut("http://localhost:8080/" + file.getName());
- ProgressBarListener listener = new ProgressBarListener(progressBar);
- FileEntityWithProgressBar fileEntity = new FileEntityWithProgressBar(file, "binary/octet-stream", listener);
- put.setEntity(fileEntity);
- HttpResponse response = client.execute(put);
- HttpEntity entity = response.getEntity();
- if (entity != null)
- {
- serverResponse = EntityUtils.toString(entity);
- System.out.println(serverResponse);
- }
- }
- }
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import org.apache.http.entity.AbstractHttpEntity;
- /**
- * File entity which supports a progress bar.<br/>
- * Based on "org.apache.http.entity.FileEntity".
- * @author Benny Neugebauer (www.bennyn.de)
- */
- public class FileEntityWithProgressBar extends AbstractHttpEntity implements Cloneable
- {
- protected final File file;
- private final ProgressBarListener listener;
- private long transferredBytes;
- public FileEntityWithProgressBar(final File file, final String contentType, ProgressBarListener listener)
- {
- super();
- if (file == null)
- {
- throw new IllegalArgumentException("File may not be null");
- }
- this.file = file;
- this.listener = listener;
- this.transferredBytes = 0;
- setContentType(contentType);
- }
- public boolean isRepeatable()
- {
- return true;
- }
- public long getContentLength()
- {
- return this.file.length();
- }
- public InputStream getContent() throws IOException
- {
- return new FileInputStream(this.file);
- }
- public void writeTo(final OutputStream outstream) throws IOException
- {
- if (outstream == null)
- {
- throw new IllegalArgumentException("Output stream may not be null");
- }
- InputStream instream = new FileInputStream(this.file);
- try
- {
- byte[] tmp = new byte[4096];
- int l;
- while ((l = instream.read(tmp)) != -1)
- {
- outstream.write(tmp, 0, l);
- this.transferredBytes += l;
- this.listener.updateTransferred(this.transferredBytes);
- }
- outstream.flush();
- }
- finally
- {
- instream.close();
- }
- }
- public boolean isStreaming()
- {
- return false;
- }
- @Override
- public Object clone() throws CloneNotSupportedException
- {
- return super.clone();
- }
- }
- import javax.swing.JProgressBar;
- public class ProgressBarListener
- {
- private int transferedMegaBytes = 0;
- private JProgressBar progressBar = null;
- public ProgressBarListener()
- {
- super();
- }
- public ProgressBarListener(JProgressBar progressBar)
- {
- this();
- this.progressBar = progressBar;
- }
- public void updateTransferred(long transferedBytes)
- {
- transferedMegaBytes = (int) (transferedBytes / 1048576);
- this.progressBar.setValue(transferedMegaBytes);
- this.progressBar.paint(progressBar.getGraphics());
- System.out.println("Transferred: " + transferedMegaBytes + " Megabytes.");
- }
- }
- public class FileEntity extends org.apache.http.entity.FileEntity {
- private OutputStreamProgress outstream;
- public FileEntity(File file, String contentType) {
- super(file, contentType);
- }
- @Override
- public void writeTo(OutputStream outstream) throws IOException {
- this.outstream = new OutputStreamProgress(outstream);
- super.writeTo(this.outstream);
- }
- /**
- * Progress: 0-100
- */
- public int getProgress() {
- if (outstream == null) {
- return 0;
- }
- long contentLength = getContentLength();
- if (contentLength <= 0) { // Prevent division by zero and negative values
- return 0;
- }
- long writtenLength = outstream.getWrittenLength();
- return (int) (100*writtenLength/contentLength);
- }
- }
- public class OutputStreamProgress extends OutputStream {
- private final OutputStream outstream;
- private volatile long bytesWritten=0;
- public OutputStreamProgress(OutputStream outstream) {
- this.outstream = outstream;
- }
- @Override
- public void write(int b) throws IOException {
- outstream.write(b);
- bytesWritten++;
- }
- @Override
- public void write(byte[] b) throws IOException {
- outstream.write(b);
- bytesWritten += b.length;
- }
- @Override
- public void write(byte[] b, int off, int len) throws IOException {
- outstream.write(b, off, len);
- bytesWritten += len;
- }
- @Override
- public void flush() throws IOException {
- outstream.flush();
- }
- @Override
- public void close() throws IOException {
- outstream.close();
- }
- public long getWrittenLength() {
- return bytesWritten;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement