PDA

View Full Version : ذخیره باینری فایل بر روی سرور



moja.azimi
پنج شنبه 27 مرداد 1390, 17:25 عصر
سلام دوستان
من توسط کد زیر ز یک فرم 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> <%
}

%>

L u k e
پنج شنبه 27 مرداد 1390, 17:57 عصر
یعنی چه که روی هارد ذخیره می شه نه روی سرور ؟
خوب روی سرور هارد سرور باید ذخیره شه دیگه

با این کد تابع می تونی هر فایلی رو روی هارد سرور ذخیره کنی


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());
}
}

moja.azimi
جمعه 28 مرداد 1390, 13:26 عصر
یعنی باید ادرس روی سرور رو با HTTP بدم یا مثل هارد خودم بگم فلان جا ذخیره کن؟ اخه می خوام عکسام کنار فایلای سرور باشن تا با ادرس نسبی بهشون دسترسی داشته باشم

L u k e
جمعه 28 مرداد 1390, 16:43 عصر
آره باید نسبی بدی چون هر جایی اجازه نداری فایلا تو بریزی باید حتما تو root پروژت باشه

saeedIRHA
یک شنبه 30 مرداد 1390, 03:18 صبح
http://irandev.co.uk/Programming/Java/FileUploader.zip