Здравствуйте. помогите пожалуйста новичку. Имеется БД с полями:
FileBody (BLOB)
FileSize (String)
FileName (String)
Так же имеется форма, содержащая input text type="file" и кнопку "Загрузить". Подскажите пожалуйста, как должен выглядеть бин и jsp-страница, чтобы по нажатию на кнопку "загрузить" тело файла сохранлось в поле FileBody, его размер - в FileSize, а имя - в FileName. Скиньте пример кода, если не сложно. Я использую MySQL Server 5.0, Apache Tomcat 6.0.14 и фреймворк JSF. Соединение с базой устанавливается и запросы выполняются. Проблема по сути состаит в том, чтобы получить параметры FileBody, FileSize и FileName.
Буду очень признателен.
ну то есть у меня есть JSP-страница:
DataBaseUpload.jsp:
<form enctype="multipart/form-data" action="upload" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="300000">
<font class="other_font">Выберите файл для загрузки:</font>
<input name="myfile" type="file" class="input_class">
<input type="submit" value="Загрузить" class="input_class">
</form>
подскажите, плиз, как должен выглядеть код класса upload.java, чтобы по нажатию на кнопку "Загрузить" формировались нужные параметры для SQL-запроса?
Загрузка файла в БД
Модератор: Absurd
пишу следующий бин:
но почему то говорит что DiskFileItemFactory(), ServletFileUpload и parseRequest(request) - неизвестные символы. Хотя делаю точ в точ, как написано в документации: http://commons.apache.org/fileupload/using.html. Видимо каких то джаров все таки не хватает.
Код: Выделить всё
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
public class FileUploadServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
PrintWriter out = response.getWriter();
try {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
List /* FileItem */ items = upload.parseRequest(request);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem) iter.next();
if (!item.isFormField()) {
if (item.getSize() > 0) {
String fieldName = item.getFieldName();
byte[] data = item.get();
}
}
}
}
catch (Exception ex) {
throw new ServletException(ex);
}
}
}
Код: Выделить всё
org.apache.commons.fileupload.servlet.ServletFileUpload
org.apache.commons.fileupload.disk.DiskFileItemFactor
+
FileUpload depends on Commons IO, so make sure you have the version mentioned on the dependencies page in your classpath before continuing.
-
- Сообщения: 4
- Зарегистрирован: 29 ноя 2009, 03:43
- Откуда: Russia
- Контактная информация:
Как средствами MySQL C API загрузить содержимое произвольного файла в поле с типом BLOB? Выполнив обычный запрос INSERT, при этом поместив между двумя одинарными ковычками все содержимое файла? Или использовать LOAD DATA INFILE? Или есть все же более подходящие средства? Не хочется пережевывать весь файл, экранируя служебные символы...