導航:首頁 > IDC知識 > 流伺服器上傳文件

流伺服器上傳文件

發布時間:2021-03-16 03:22:03

1、上傳文件到伺服器,流量算誰的?

二邊都要算流量,這個沒辦法

2、如何實現上傳文件到伺服器

common-fileupload是jakarta項目組開發的一個功能很強大的上傳文件組件
下面先介紹上傳文件到伺服器(多文件上傳):
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.util.regex.*;
import org.apache.commons.fileupload.*;

public class upload extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GB2312";
//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out=response.getWriter();
try {
DiskFileUpload fu = new DiskFileUpload();
// 設置允許用戶上傳文件大小,單位:位元組,這里設為2m
fu.setSizeMax(2*1024*1024);
// 設置最多隻允許在內存中存儲的數據,單位:位元組
fu.setSizeThreshold(4096);
// 設置一旦文件大小超過getSizeThreshold()的值時數據存放在硬碟的目錄
fu.setRepositoryPath("c://windows//temp");
//開始讀取上傳信息
List fileItems = fu.parseRequest(request);
// 依次處理每個上傳的文件
Iterator iter = fileItems.iterator();
//正則匹配,過濾路徑取文件名
String regExp=".+////(.+)$";
//過濾掉的文件類型
String[] errorType={".exe",".com",".cgi",".asp"};
Pattern p = Pattern.compile(regExp);
while (iter.hasNext()) {
FileItem item = (FileItem)iter.next();
//忽略其他不是文件域的所有表單信息
if (!item.isFormField()) {
String name = item.getName();
long size = item.getSize();
if((name==null||name.equals("")) && size==0)
continue;
Matcher m = p.matcher(name);
boolean result = m.find();
if (result){
for (int temp=0;temp<ERRORTYPE.LENGTH;TEMP++){
if (m.group(1).endsWith(errorType[temp])){
throw new IOException(name+": wrong type");
}
}
try{
//保存上傳的文件到指定的目錄
//在下文中上傳文件至資料庫時,將對這里改寫
item.write(new File("d://" + m.group(1)));
out.print(name+" "+size+"");
}
catch(Exception e){
out.println(e);
}
}
else
{
throw new IOException("fail to upload");
}
}
}
}
catch (IOException e){
out.println(e);
}
catch (FileUploadException e){
out.println(e);
}

}
}
現在介紹上傳文件到伺服器,下面只寫出相關代碼:
以sql2000為例,表結構如下:
欄位名:name filecode
類型: varchar image
資料庫插入代碼為:PreparedStatement pstmt=conn.prepareStatement("insert into test values(?,?)");
代碼如下:
。。。。。。
try{
這段代碼如果不去掉,將一同寫入到伺服器中
//item.write(new File("d://" + m.group(1)));

int byteread=0;
//讀取輸入流,也就是上傳的文件內容
InputStream inStream=item.getInputStream();
pstmt.setString(1,m.group(1));
pstmt.setBinaryStream(2,inStream,(int)size);
pstmt.executeUpdate();
inStream.close();
out.println(name+" "+size+" ");
}
。。。。。。
這樣就實現了上傳文件至資料庫

3、如何文件上傳至伺服器某一目錄下

common-fileupload是jakarta項目組開發的一個功能很強大的上傳文件組件
下面先介紹上傳文件到伺服器(多文件上傳):
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
import java.util.regex.*;
import org.apache.commons.fileupload.*;

public class upload extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GB2312";
//Process the HTTP Post request
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
PrintWriter out=response.getWriter();
try {
DiskFileUpload fu = new DiskFileUpload();
// 設置允許用戶上傳文件大小,單位:位元組,這里設為2m
fu.setSizeMax(2*1024*1024);
// 設置最多隻允許在內存中存儲的數據,單位:位元組
fu.setSizeThreshold(4096);
// 設置一旦文件大小超過getSizeThreshold()的值時數據存放在硬碟的目錄
fu.setRepositoryPath("c://windows//temp");
//開始讀取上傳信息
List fileItems = fu.parseRequest(request);
// 依次處理每個上傳的文件
Iterator iter = fileItems.iterator();
//正則匹配,過濾路徑取文件名
String regExp=".+////(.+)$";
//過濾掉的文件類型
String[] errorType={".exe",".com",".cgi",".asp"};
Pattern p = Pattern.compile(regExp);
while (iter.hasNext()) {
FileItem item = (FileItem)iter.next();
//忽略其他不是文件域的所有表單信息
if (!item.isFormField()) {
String name = item.getName();
long size = item.getSize();
if((name==null||name.equals("")) && size==0)
continue;
Matcher m = p.matcher(name);
boolean result = m.find();
if (result){
for (int temp=0;temp<ERRORTYPE.LENGTH;TEMP++){
if (m.group(1).endsWith(errorType[temp])){
throw new IOException(name+": wrong type");
}
}
try{
//保存上傳的文件到指定的目錄
//在下文中上傳文件至資料庫時,將對這里改寫
item.write(new File("d://" + m.group(1)));
out.print(name+" "+size+"");
}
catch(Exception e){
out.println(e);
}
}
else
{
throw new IOException("fail to upload");
}
}
}
}
catch (IOException e){
out.println(e);
}
catch (FileUploadException e){
out.println(e);
}

}
}
現在介紹上傳文件到伺服器,下面只寫出相關代碼:
以sql2000為例,表結構如下:
欄位名:name filecode
類型: varchar image
資料庫插入代碼為:PreparedStatement pstmt=conn.prepareStatement("insert into test values(?,?)");
代碼如下:
。。。。。。
try{
這段代碼如果不去掉,將一同寫入到伺服器中
//item.write(new File("d://" + m.group(1)));

int byteread=0;
//讀取輸入流,也就是上傳的文件內容
InputStream inStream=item.getInputStream();
pstmt.setString(1,m.group(1));
pstmt.setBinaryStream(2,inStream,(int)size);
pstmt.executeUpdate();
inStream.close();
out.println(name+" "+size+" ");
}
。。。。。。
這樣就實現了上傳文件至資料庫

4、java怎麼實現上傳文件到伺服器

common-fileupload是jakarta項目組開發的一個功能很強大的上傳文件組件

下面先介紹上傳文件到伺服器(多文件上傳):

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

import java.util.*;

import java.util.regex.*;

import org.apache.commons.fileupload.*;


public class upload extends HttpServlet {

private static final String CONTENT_TYPE = "text/html; charset=GB2312";

//Process the HTTP Post request

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

response.setContentType(CONTENT_TYPE);

PrintWriter out=response.getWriter();

try {

DiskFileUpload fu = new DiskFileUpload();

 // 設置允許用戶上傳文件大小,單位:位元組,這里設為2m

 fu.setSizeMax(2*1024*1024);

 // 設置最多隻允許在內存中存儲的數據,單位:位元組

 fu.setSizeThreshold(4096);

 // 設置一旦文件大小超過getSizeThreshold()的值時數據存放在硬碟的目錄

 fu.setRepositoryPath("c://windows//temp");

 //開始讀取上傳信息

 List fileItems = fu.parseRequest(request);

 // 依次處理每個上傳的文件

 Iterator iter = fileItems.iterator();

//正則匹配,過濾路徑取文件名

 String regExp=".+////(.+)$";

//過濾掉的文件類型

String[] errorType={".exe",".com",".cgi",".asp"};

 Pattern p = Pattern.compile(regExp);

 while (iter.hasNext()) {

 FileItem item = (FileItem)iter.next();

 //忽略其他不是文件域的所有表單信息

 if (!item.isFormField()) {

 String name = item.getName();

 long size = item.getSize();

 if((name==null||name.equals("")) && size==0)

 continue;

 Matcher m = p.matcher(name);

 boolean result = m.find();

 if (result){

 for (int temp=0;temp<ERRORTYPE.LENGTH;TEMP++){

 if (m.group(1).endsWith(errorType[temp])){

 throw new IOException(name+": wrong type");

 }

 }

 try{

//保存上傳的文件到指定的目錄

//在下文中上傳文件至資料庫時,將對這里改寫

 item.write(new File("d://" + m.group(1)));

out.print(name+"  "+size+"");

 }

 catch(Exception e){

 out.println(e);

 }

}

 else

 {

 throw new IOException("fail to upload");

 }

 }

 }

}

 catch (IOException e){

 out.println(e);

 }

 catch (FileUploadException e){

out.println(e);

 }

 

}

}

現在介紹上傳文件到伺服器,下面只寫出相關代碼:

以sql2000為例,表結構如下:

欄位名:name  filecode

類型: varchar image

資料庫插入代碼為:PreparedStatement pstmt=conn.prepareStatement("insert into test values(?,?)");

代碼如下:

。。。。。。

try{

這段代碼如果不去掉,將一同寫入到伺服器中

//item.write(new File("d://" + m.group(1)));

 

int byteread=0;

//讀取輸入流,也就是上傳的文件內容

InputStream inStream=item.getInputStream();  

pstmt.setString(1,m.group(1));

pstmt.setBinaryStream(2,inStream,(int)size);

pstmt.executeUpdate();

inStream.close();

out.println(name+"  "+size+" ");

}

。。。。。。

這樣就實現了上傳文件至資料庫

5、asp.net 如何使用數據流上傳文件到伺服器啊?當用到file控制項的時候點擊確認按鈕會清空路徑

public static string FileUpload(string f1)
{
string result = "";
string filePath = f1;
string filename = "";
FileInfo file = new FileInfo(filePath);
string fileExtenName = file.Extension;
//string fileNewName = DateTime.Now.ToString("yyyyMMddHHmmss") + fileExtenName;
int ipos = f1.LastIndexOf("\\");
if (ipos.ToString() != "-1")
{
filename = f1.Substring(ipos);
}
else
{
filename = f1;
}
string aFirstName = filename.Substring(filename.LastIndexOf("\\") + 1, (filename.LastIndexOf(".") - filename.LastIndexOf("\\") - 1)) + file.Extension;
string fileSavePath = System.Web.HttpContext.Current.Server.MapPath(@"~\Upload\") + aFirstName;
///真正上傳就是從這里開始,這是ASP.NET,記得winform也是一樣的
FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite);
//把文件流中轉化成位元組數組
byte[] imageBytes = new byte[(int)fs.Length];
fs.Read(imageBytes, 0, imageBytes.Length);
fs.Close();
MemoryStream ms = new MemoryStream(imageBytes);//定義並實例化一個內存流,以存放提交上來的位元組數組。
FileStream fss = new FileStream(fileSavePath, FileMode.Create);
ms.WriteTo(fss);
fss.Close();
ms.Close();
return result = "Upload/" + aFirstName;

}

6、JAVA 把文件傳到伺服器.......

文件上傳到A以後 放到伺服器上面 然後他就有一個絕對的訪問路徑 也就是對應一個絕對的url 這樣就好辦了
Java提供了對URL訪問和大量的流操作的的API,可以很容易的完成對網路上資源的存取,下面的代碼段就完成了對一個網站的資源進行訪問:

......
destUrl="http://www.yourweb.com/java/Afile.zip";
//假設你把文件放到webroot底下的java文件裡面
url = new URL(destUrl);
httpUrl = (HttpURLConnection) url.openConnection();
//連接指定的網路資源
httpUrl.connect();
//獲取網路輸入流
bis = new BufferedInputStream(httpUrl.getInputStream());
......

得到流後下面你自己想怎麼操作就怎麼操作了

對於怎麼得到資源的連接地址這個方法很多 你可以專門提供一個Servlet 獲取到輸出的流後 Response.write轉門提供伺服器已上傳的文件 文件名可以一天位單位返回
客戶端用與上面同樣的方法得到文件名後 拆分 然後再繼續循環調用上面的方法 下載文件就ok了

呵呵 希望可以幫助到你

7、如何往伺服器上傳文件

?

8、怎麼使用流文件上傳圖片

public byte[] GetPictureData(string Path)
{
FileStream FS = new FileStream(Path, FileMode.Open);
byte[] byData = new byte[FS.Length];
FS.Read(byData, 0, byData.Length);
FS.Close();
return byData;
}
//根據上述方法文件轉為二進制,在寫方法存入你的資料庫中

9、java伺服器端用傳輸給客戶端文件流(fileinputstream),客戶端應該如何接收?(socket )

其實這個問題你應該先想一下socket到底是一個什麼東西,在網路編程中socket到底用來做什麼的。socket:在操作系統內核中它代表網路連接的一個端點(endpoint),在應用程序中它代表一個打開的文件。socket pair唯一確定的一條網路連接,socket pair就是客戶端socket和服務端socket的一個組合。也就是客戶端ip和port與服務端ip和port的組合。一條網路連接也就是一條通信的信道,tcp連接代表的信道是全雙工的。以信道來講,邏輯上就存在兩個管道來代表輸出與輸入來發送和接收信息。

那麼在應用程序上我們就可以拿到這2個管道來完成socket之間的通信。

以你的應用來看輸出流fos就代表著圖中的紅色管道,那麼在服務端就應該是這個樣的。

Scoket connSock = serverSocket.accept();//connSock代表著服務端的Socket

InputStream is = connSock.getInputStream();//輸入流is代表圖中的紅色管道

OutputStrea os = connSock.getOutputStream();//輸出流os代表圖中的綠色管道

在服務端有一個位元組緩沖區來存放從is讀取的位元組數據

byte[] buffer = new byte[1024];

然後服務端讀取數據來填充這個位元組緩沖區

is.read(buffer);//比如這樣

然後就根據你的需求來操作這個buffer了。

然後把處理過後的數據通過os發送給客戶端。os就是圖中的那個綠色管道

os.write(處理過後的數據);

10、怎樣上傳文件到linux伺服器

如果有ip地址,ftp賬號密碼,也可以用 ftp軟體上傳。linux伺服器就是直接用ftp軟體上傳文件了。

此類的ftp軟體很多,比如xhell 等。

與流伺服器上傳文件相關的知識