ذخیره باینری فایل بر روی سرور
سلام دوستان
من توسط کد زیر ز یک فرم Html یک عکس رو به صورت ارایه ای ار byte در اوردم. فقط وقتی می خوام روی سرور ذخیره کنم نمی زاره چونFileOutputStream فقط رو هارد ذخیره می کنه نه رو سرور. باید چه کار کنم که روی سرور ذخیره شه. اگر جایی اشتباه دارم ممنون میشم کمکم کنید. ممنون.
<%@page contentType="text/html;charset=UTF-8" language="java" %>
<%@page import="java.io.*"%>
<%
String contentType = request.getContentType();
if ((contentType != null) && (contentType.indexOf("multipart/form-data") >= 0)){
DataInputStream in = new DataInputStream(request.getInputStream());
int formDataLength = request.getContentLength();
byte dataBytes[] = new byte[formDataLength];
int byteRead = 0;
int totalBytesRead = 0;
while (totalBytesRead < formDataLength) {
byteRead = in.read(dataBytes, totalBytesRead, formDataLength);
totalBytesRead += byteRead;
}
String file = new String(dataBytes);
int lastIndex = contentType.lastIndexOf("=");
String boundary = contentType.substring(lastIndex + 1,
contentType.length());
int pos;
//extracting the index of file
pos = file.indexOf("filename=\"");
pos = file.indexOf("\n", pos) + 1;
pos = file.indexOf("\n", pos) + 1;
pos = file.indexOf("\n", pos) + 1;
int boundaryLocation = file.indexOf(boundary, pos) - 4;
int startPos = ((file.substring(0, pos)).getBytes()).length;
int endPos = ((file.substring(0, boundaryLocation)).getBytes()).length;
FileOutputStream fileOut = new FileOutputStream("http:////localhost:8080//MyProject//test.jpg");
fileOut.write(dataBytes, startPos, (endPos - startPos));
fileOut.flush();
fileOut.close();
%><Br><table border="2"><tr><td><b>You have successfully
upload the file by the name of:</b>
</td></tr></table> <%
}
%>
نقل قول: ذخیره باینری فایل بر روی سرور
یعنی چه که روی هارد ذخیره می شه نه روی سرور ؟
خوب روی سرور هارد سرور باید ذخیره شه دیگه
با این کد تابع می تونی هر فایلی رو روی هارد سرور ذخیره کنی
کد HTML:
public static void Upload_File(InputStream stream, String path) {
try {
int b = stream.read();
String content = "";
while (b > 0) {
content += (char) b;
b = stream.read();
}
FileWriter fw = new FileWriter(path);
fw.write(content);
fw.flush();
fw.close();
} catch (Exception ex) {
Loging(ex.getMessage());
}
}
public static void Upload_File(InputStream stream, String path, int lenght, String Type) {
try {
DataInputStream in = new DataInputStream(stream);
byte dataBytes[] = new byte[lenght];
int byteRead = 0, totalBytesRead = 0;
while (totalBytesRead < lenght) {
byteRead = in.read(dataBytes, totalBytesRead, lenght);
totalBytesRead += byteRead;
}
FileOutputStream fileOut = new FileOutputStream(path);
fileOut.write(dataBytes);
fileOut.flush();
fileOut.close();
} catch (Exception ex) {
Loging(ex.getMessage());
}
}
نقل قول: ذخیره باینری فایل بر روی سرور
یعنی باید ادرس روی سرور رو با HTTP بدم یا مثل هارد خودم بگم فلان جا ذخیره کن؟ اخه می خوام عکسام کنار فایلای سرور باشن تا با ادرس نسبی بهشون دسترسی داشته باشم
نقل قول: ذخیره باینری فایل بر روی سرور
آره باید نسبی بدی چون هر جایی اجازه نداری فایلا تو بریزی باید حتما تو root پروژت باشه
نقل قول: ذخیره باینری فایل بر روی سرور