Android:How to upload .mp3 file and image to http server?
2012-04-16 16:17
549 查看
问:
My code for uploading image to Server is :
Uploading image to server works fine.. I need to upload both mp3 file and image to the server..Please Help
回答:
So, you want to send multiple files in one HTTP request? I've never done this myself, but according to the RFC,
just add another body to the message in which you send the audio, it should look something like this:
Make sure that the names of both parts are different (depending on the server software).
My code for uploading image to Server is :
String userIdParameter = String.valueOf(userId); String fileName = "temporary_holder.jpg"; HttpURLConnection conn = null; DataOutputStream dos = null; String lineEnd = "\r\n"; String twoHyphens = "--"; String boundary = "*****"; int bytesRead, bytesAvailable, bufferSize; byte[] buffer; int maxBufferSize = 1 * 1024 * 1024; String sourceFileUri = HomeScreen.get_path(); String upLoadServerUri = "http://10.120.10.87:8080/WebImage/UploadImage"; File sourceFile = new File(sourceFileUri); if (!sourceFile.isFile()) { Log.e("Huzza", "Source File Does not exist"); return; } int serverResponseCode = 0; try { // open a URL connection to the Servlet FileInputStream fileInputStream = new FileInputStream(sourceFile); // ------------------ CLIENT REQUEST URL url = new URL(upLoadServerUri); // Open a HTTP connection to the URL conn = (HttpURLConnection) url.openConnection(); conn.setDoInput(true); // Allow Inputs conn.setDoOutput(true); // Allow Outputs conn.setUseCaches(false); // Don't use a Cached Copy // Use a post method. conn.setRequestMethod("POST"); conn.setRequestProperty("Connection", "Keep-Alive"); conn.setRequestProperty("ENCTYPE", "multipart/form-data"); conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary); conn.setRequestProperty("file_name", fileName); conn.setRequestProperty("file_name_audio", fileName); conn.setRequestProperty("X-myapp-param1", userIdParameter); // conn.setFixedLengthStreamingMode(1024); // conn.setChunkedStreamingMode(1); dos = new DataOutputStream(conn.getOutputStream()); dos.writeBytes(twoHyphens + boundary + lineEnd); dos.writeBytes("Content-Disposition: form-data; name=\"file_name\";filename=\"" + fileName + "\"" + lineEnd); dos.writeBytes(lineEnd); // create a buffer of maximum size bytesAvailable = fileInputStream.available(); int streamSize = (int) sourceFile.length(); bufferSize = streamSize / 10; System.out.println("streamSize" + streamSize); buffer = new byte[streamSize]; // read file and write it into form... bytesRead = fileInputStream.read(buffer, 0, bufferSize); int count = 0; while (bytesRead > 0) { progress = (int) (count); displayNotification(); Thread.sleep(500); dos.write(buffer, 0, bufferSize); bytesAvailable = fileInputStream.available(); // bufferSize = Math.min(bytesAvailable, maxBufferSize); bytesRead = fileInputStream.read(buffer, 0, bufferSize); count += 10; } // send multipart form data necesssary after file data... dos.writeBytes(lineEnd); dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd); // Responses from the server (code and message) serverResponseCode = conn.getResponseCode(); String serverResponseMessage = conn.getResponseMessage(); System.out.println("Upload file to serverHTTP Response is : " + serverResponseMessage + ": " + serverResponseCode); // close streams System.out.println("Upload file to server" + fileName + " File is written"); fileInputStream.close(); dos.flush(); dos.close(); } catch (MalformedURLException ex) { ex.printStackTrace(); Log.e("Upload file to server", "error: " + ex.getMessage(), ex); } catch (Exception e) { e.printStackTrace(); } // this block will give the response of upload link try { BufferedReader rd = new BufferedReader(new InputStreamReader( conn.getInputStream())); String line; while ((line = rd.readLine()) != null) { System.out.println("RESULT Message: " + line); } rd.close(); } catch (IOException ioex) { Log.e("Huzza", "error: " + ioex.getMessage(), ioex); } return; // like 200 (Ok)
Uploading image to server works fine.. I need to upload both mp3 file and image to the server..Please Help
回答:
So, you want to send multiple files in one HTTP request? I've never done this myself, but according to the RFC,
just add another body to the message in which you send the audio, it should look something like this:
dos = new DataOutputStream(conn.getOutputStream()); dos.writeBytes(twoHyphens + boundary + lineEnd); dos.writeBytes("Content-Disposition: form-data; name=\"file_name\";filename=\"" + fileName + "\"" + lineEnd); dos.writeBytes(lineEnd); // Code for sending the image.... dos.writeBytes(lineEnd); dos.writeBytes(twoHyphens + boundary + lineEnd); dos.writeBytes("Content-Disposition: form-data; name=\"file_name_audio\";filename=\"" + fileNameAudio + "\"" + lineEnd); dos.writeBytes(lineEnd); // Code for sending the MP3 dos.writeBytes(lineEnd); dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
Make sure that the names of both parts are different (depending on the server software).
相关文章推荐
- How to transfer image file to server from android
- how to delete .tmp file in server which is created during file upload
- How to store an image file to SQliteDB in android
- How to store an image file to SQliteDB in android
- [SQL Server][FILESTREAM] -- How to Backup and Restore a SQL Server FILESTREAM Enabled Database
- How to upload a file via a HTTP multipart request in Java without using any external libraries
- [SQL Server][FILESTREAM] -- How to Detach and Attach a SQL Server FILESTREAM Enabled Database
- Android: Upload image or file using http POST multi-part
- Android Upload File to Server
- Jboss image upload and http access to show image--reference
- HOW TO: Upload a File to a Web Server in ASP.NET by Using Visual Basic .NET
- How to create and use SDCard image for Android emulator
- using http upload file to web server
- How to see all the application errors related to SQL Server and export them to a .csv file.
- how to upload a file to server/ how to modify a file in server
- how to create image file and format it
- How to resize a *.jpg image and save the result to a file
- How to upload and download image from habase?
- Android Upload File to Server
- How.To.Process.Image.Infomation.Of.Rotate.And.Flip.From.Server