upload and attach files to email
0 posts in topic
Flat View  Flat View
TOPIC ACTIONS:
 

Posted By:   Anonymous
Posted On:   Thursday, October 31, 2002 01:23 PM

I did read the FAQs and that is how I got this far. Any help or direction would be appreciated. I have a simple class that uploads a file to the server. import javax.servlet.http.HttpServletRequest; import javax.servlet.ServletInputStream; import java.util.Dictionary; import java.util.Hashtable; import java.io.PrintWriter; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public class FileUploadBean { private String savePath, filepath, filename, contentType; private Dictionary fields; public String getFilename() { return filename;   More>>

I did read the FAQs and that is how I got this far. Any help or direction would be appreciated.


I have a simple class that uploads a file to the server.



import javax.servlet.http.HttpServletRequest;

import javax.servlet.ServletInputStream;

import java.util.Dictionary;

import java.util.Hashtable;

import java.io.PrintWriter;

import java.io.BufferedWriter;

import java.io.FileWriter;

import java.io.IOException;


public class FileUploadBean {


private String savePath, filepath, filename, contentType;
private Dictionary fields;


public String getFilename() {
return filename;
}


public String getFilepath() {
return filepath;
}


public void setSavePath(String savePath) {
this.savePath = savePath;
}


public String getContentType() {
return contentType;
}


public String getFieldValue(String fieldName) {
if (fields == null || fieldName == null)
return null;
return (String) fields.get(fieldName);
}


private void setFilename(String s) {
if (s==null)
return;


int pos = s.indexOf("filename="");
if (pos != -1) {

filepath = s.substring(pos+10, s.length()-1);
pos = filepath.lastIndexOf("\");
if (pos != -1)
filename = filepath.substring(pos + 1);

else
filename = filepath;
}
}

private void setContentType(String s) {
if (s==null)
return;


int pos = s.indexOf(": ");
if (pos != -1)
contentType = s.substring(pos+2, s.length());
}


public void doUpload(HttpServletRequest request) throws IOException {
ServletInputStream in = request.getInputStream();

byte[] line = new byte[128];
int i = in.readLine(line, 0, 128);
if (i < 3)
return;
int boundaryLength = i - 2;

String boundary = new String(line, 0, boundaryLength); //-2 discards t
fields = new Hashtable();

while (i != -1) {
String newLine = new String(line, 0, i);
if (newLine.startsWith("Content-Disposition: form-data; name="")) {
if (newLine.indexOf("filename="") != -1) {
setFilename(new String(line, 0, i-2));
if (filename==null)
return;
//this is the file content
i = in.readLine(line, 0, 128);
setContentType(new String(line, 0, i-2));
i = in.readLine(line, 0, 128);
// blank line
i = in.readLine(line, 0, 128);
newLine = new String(line, 0, i);
PrintWriter pw = new PrintWriter(new BufferedWriter(new
FileWriter(("/data/verity/custom-kb/wwwroot/attachments/") + filename)));
while (i != -1 && !newLine.startsWith(boundary)) {
i = in.readLine(line, 0, 128);
if ((i==boundaryLength+2 || i==boundaryLength+4) // + 4 is eof
&& (new String(line, 0, i).startsWith(boundary)))
pw.print(newLine.substring(0, newLine.length()-2));
else
pw.print(newLine);
newLine = new String(line, 0, i);

}
pw.close();

}
else {
//this is a field
// get the field name
int pos = newLine.indexOf("name="");
String fieldName = newLine.substring(pos+6, newLine.length()-3);
//System.out.println("fieldName:" + fieldName);
// blank line
i = in.readLine(line, 0, 128);
i = in.readLine(line, 0, 128);
newLine = new String(line, 0, i);
StringBuffer fieldValue = new StringBuffer(128);
while (i != -1 && !newLine.startsWith(boundary)) {

i = in.readLine(line, 0, 128);
if ((i==boundaryLength+2 || i==boundaryLength+4) // + 4 is eof
&& (new String(line, 0, i).startsWith(boundary)))
fieldValue.append(newLine.substring(0, newLine.length()-2));
else
fieldValue.append(newLine);
newLine = new String(line, 0, i);
}
//System.out.println("fieldValue:" + fieldValue.toString());
fields.put(fieldName, fieldValue.toString());
}
}
i = in.readLine(line, 0, 128);

} // end while
}



}




I found the code for sending emails with attachments on this site, called class AttachExample.


Is it possible for me to make it one step? The user submits a doc to the server then I receive an email with the attachment.


I am confused to as how I can pass the file information to the AttachExample class in a format it will understand. Does it need me to pass it the path to the file?


   <<Less
About | Sitemap | Contact