Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
java_weekendowa_20221008
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Patryk Czarnik
java_weekendowa_20221008
Commits
09bcd4a6
Commit
09bcd4a6
authored
Nov 13, 2022
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Upload plików na przykładzie zdjęcia produktu
parent
c9e6f119
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
88 additions
and
1 deletions
+88
-1
DoUploadPhoto.java
PC25-SklepWeb/src/main/java/sklep/photo/DoUploadPhoto.java
+39
-0
PhotoUtil.java
PC25-SklepWeb/src/main/java/sklep/photo/PhotoUtil.java
+12
-0
index.html
PC25-SklepWeb/src/main/webapp/index.html
+2
-1
products9.jsp
PC25-SklepWeb/src/main/webapp/products9.jsp
+1
-0
upload_photo.jsp
PC25-SklepWeb/src/main/webapp/upload_photo.jsp
+34
-0
No files found.
PC25-SklepWeb/src/main/java/sklep/photo/DoUploadPhoto.java
0 → 100644
View file @
09bcd4a6
package
sklep
.
photo
;
import
java.io.IOException
;
import
javax.servlet.ServletException
;
import
javax.servlet.annotation.MultipartConfig
;
import
javax.servlet.annotation.WebServlet
;
import
javax.servlet.http.HttpServlet
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.Part
;
// Włączona obsługa zapytań multipart ("z załącznikami"). Maks rozmiar zapytania/pliku: 16M
@WebServlet
(
"/DoUploadPhoto"
)
@MultipartConfig
(
maxRequestSize
=
16
*
1024
*
1024
)
public
class
DoUploadPhoto
extends
HttpServlet
{
private
static
final
long
serialVersionUID
=
1L
;
protected
void
doPost
(
HttpServletRequest
request
,
HttpServletResponse
response
)
throws
ServletException
,
IOException
{
try
{
String
paramId
=
request
.
getParameter
(
"productId"
);
if
(
paramId
!=
null
)
{
int
productId
=
Integer
.
parseInt
(
paramId
);
Part
part
=
request
.
getPart
(
"plik"
);
if
(
part
!=
null
)
{
// przysłano plik
// Tutaj nazwa pliku jest dla nas bez znaczenia, ale gdybyśmy potrzebowali, to w ten sposób:
// String nazwaPliku = part.getSubmittedFileName();
// Przypisujemy bajty ze strumienia do pliku w katalogu ze zdjęciami:
PhotoUtil
.
writeStream
(
productId
,
part
.
getInputStream
());
}
}
}
catch
(
Exception
e
)
{
// wypisujemy błąd, ale metoda kończy się normalnie
e
.
printStackTrace
();
}
response
.
sendRedirect
(
"products9.jsp"
);
}
}
PC25-SklepWeb/src/main/java/sklep/photo/PhotoUtil.java
View file @
09bcd4a6
...
@@ -2,9 +2,11 @@ package sklep.photo;
...
@@ -2,9 +2,11 @@ package sklep.photo;
import
java.io.File
;
import
java.io.File
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.nio.file.Files
;
import
java.nio.file.Files
;
import
java.nio.file.Path
;
import
java.nio.file.Path
;
import
java.nio.file.Paths
;
import
java.nio.file.Paths
;
import
java.nio.file.StandardCopyOption
;
import
sklep.db.DBException
;
import
sklep.db.DBException
;
import
sklep.db.DBSettings
;
import
sklep.db.DBSettings
;
...
@@ -34,6 +36,16 @@ public class PhotoUtil {
...
@@ -34,6 +36,16 @@ public class PhotoUtil {
}
}
}
}
public
static
void
writeStream
(
int
productId
,
InputStream
inputStream
)
{
try
{
Path
path
=
getPath
(
productId
);
Files
.
copy
(
inputStream
,
path
,
StandardCopyOption
.
REPLACE_EXISTING
);
}
catch
(
Exception
e
)
{
// wypisujemy błąd, ale metoda kończy się normalnie
e
.
printStackTrace
();
}
}
private
static
Path
getPath
(
int
productId
)
throws
DBException
{
private
static
Path
getPath
(
int
productId
)
throws
DBException
{
String
dir
=
DBSettings
.
load
().
getProperty
(
"photo_dir"
);
String
dir
=
DBSettings
.
load
().
getProperty
(
"photo_dir"
);
String
fileName
=
productId
+
EXT
;
String
fileName
=
productId
+
EXT
;
...
...
PC25-SklepWeb/src/main/webapp/index.html
View file @
09bcd4a6
...
@@ -29,7 +29,8 @@
...
@@ -29,7 +29,8 @@
<h3>
Dodatkowe strony
</h3>
<h3>
Dodatkowe strony
</h3>
<ul>
<ul>
<li><a
href=
"Photo?productId=1"
>
Foto
</a>
- przykładowe zdjęcie
</li>
<li><a
href=
"Photo?productId=2"
>
Foto
</a>
- przykładowe zdjęcie
</li>
<li><a
href=
"upload_photo.jsp?productId=2"
>
Zmień zdjęcie
</a>
nr 2
</li>
<li><a
href=
"EditProduct?productId=1"
>
Edytuj produkt nr 1
</a></li>
<li><a
href=
"EditProduct?productId=1"
>
Edytuj produkt nr 1
</a></li>
<li><a
href=
"EditProduct"
>
Dodaj nowy produkt
</a></li>
<li><a
href=
"EditProduct"
>
Dodaj nowy produkt
</a></li>
</ul>
</ul>
...
...
PC25-SklepWeb/src/main/webapp/products9.jsp
View file @
09bcd4a6
...
@@ -59,6 +59,7 @@ do ${param.max_price}
...
@@ -59,6 +59,7 @@ do ${param.max_price}
</c:if>
</c:if>
<div><a
href=
"AddToBasket?productId=${p.productId}"
>
dodaj do koszyka
</a></div>
<div><a
href=
"AddToBasket?productId=${p.productId}"
>
dodaj do koszyka
</a></div>
<div><a
href=
"EditProduct?productId=${p.productId}"
>
edytuj
</a></div>
<div><a
href=
"EditProduct?productId=${p.productId}"
>
edytuj
</a></div>
<div><a
href=
"upload_photo.jsp?productId=${p.productId}"
>
zmień zdjęcie
</a></div>
</div>
</div>
</c:forEach>
</c:forEach>
...
...
PC25-SklepWeb/src/main/webapp/upload_photo.jsp
0 → 100644
View file @
09bcd4a6
<
%@
page
language=
"java"
contentType=
"text/html; charset=UTF-8"
pageEncoding=
"UTF-8"
%
>
<
%@
taglib
prefix=
"c"
uri=
"http://java.sun.com/jsp/jstl/core"
%
>
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"UTF-8"
>
<title>
Edycja zdjęcia
</title>
<link
rel=
"stylesheet"
type=
"text/css"
href=
"styl.css"
>
</head>
<body>
<h1>
Wgraj zdjęcie produktu
</h1>
<div>
Produkt nr
<strong>
${param.productId}
</strong></div>
<div>
Aktualne zdjęcie:
<br/>
<img
src=
"Photo?productId=${param.productId}"
alt=
"Brak zdjęcia"
>
</div>
<
%
--
action
powoduje
,
ż
e
zapytanie
z
formularza
jest
wysy
ł
ane
pod
podany
adres
,
a
nie
bie
żą
cy
.
Aby
wys
ł
a
ć
zawarto
ść
pliku
(
a
nie
tylko
jego
nazw
ę),
nale
ż
y
ustawi
ć
enctype
jak
poni
ż
ej
.
Sam
plik
to
pole
formularza
typu
file
;
opr
ó
cz
niego
mog
ą
by
ć
inne
„
zwyk
ł
e
”
pola
.
Odpowiednio
trzeba
to
te
ż
obs
ł
u
ż
y
ć
w
serwlecie
-
patrz
klasa
DoUploadPhoto
.
--
%
>
<form
id=
"photo-form"
method=
"post"
action=
"DoUploadPhoto"
enctype=
"multipart/form-data"
>
<input
type=
"hidden"
name=
"productId"
value=
"${param.productId}"
>
<label
for=
"plik"
>
Wybierz plik ze zdjęciem
</label>
<input
type=
"file"
name=
"plik"
accept=
"image/jpeg"
>
<br>
<button>
Wyślij
</button>
</form>
<p>
[
<a
href=
"products9.jsp"
>
powrót do listy produktów
</a>
]
</p>
<p>
[
<a
href=
"index.html"
>
powrót do spisu treści
</a>
]
</p>
</body>
</html>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment