2012-08-29 74 views
1

我有一個簡單的ASP.NET頁面,用戶可以瀏覽,從他們的機器中選擇一個文件並將其上傳到我的服務器。我的遠程用戶希望自動上傳文件(使用CURL)。處理自動上傳的文件

由於沒有用戶點擊一個按鈕,我需要做一些事情來處理這個問題,但是什麼?

我需要做些什麼改變才能讓我的網頁在不點擊按鈕的情況下處理文件上傳?

代碼頁...

using System; 
using System.Collections.Generic; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Configuration; 

namespace FileUpload 
{ 
    public partial class _Default : System.Web.UI.Page 
    { 
     string UploadTo_Path = ConfigurationManager.AppSettings.Get("UploadTo_Path"); 
     protected System.Web.UI.HtmlControls.HtmlInputFile File1; 
     protected void Page_Load(object sender, EventArgs e){ } 
     protected void Button1_Click(object sender, EventArgs e) 
     { 
      UploadFile(); 
     }  
     private void UploadFile() 
     { 
      if ((File1.PostedFile != null) && (File1.PostedFile.ContentLength > 0)) 
      { 
       string fn = System.IO.Path.GetFileName(File1.PostedFile.FileName); 
       UploadTo_Path += "\\" + fn; 
       File1.PostedFile.SaveAs(UploadTo_Path); 
       Response.Write("The file has been uploaded."); 
      } 
      else 
      { 
       Response.Write("Please select a file to upload."); 
      } 
     } 
    } 
} 

前端...

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="FileUpload._Default" Trace="true" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
<title>File Upload</title> 
</head> 
<body> 
    <form id="form1" runat="server" enctype="multipart/form-data"> 
     <input type="file" id="File1" name="File1" runat="server" />&nbsp; 
     <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" /> 
    </form> 
</body> 
</html> 

回答

2

我會做這不同。

我會檢查頁面是否使用POST訪問,然後運行UploadFile(),我不會使用按鈕與點擊處理程序。

在客戶端,表單只會對頁面執行正常的表單提交(POST)。

然後這讓CURL可以直接訪問頁面,而不需要做任何聰明的事情(可以禁用並且CURL不這樣做)。

+0

檢查System.Web.HttpContext.Current.Request.HttpMethod的值將執行此操作。謝謝勞埃德,非常感謝。 – cymorg

+0

請注意,在WebForm頁面上,您可以直接檢查Request.HttpMethod,我認爲,不需要漫長的上下文位。 – Lloyd

0

您可以用JavaScript火例如在頁面負載或您選擇

的另一個事件
"document.getElementById(' " + FileUpload1.ClientID+ "').click()" 
0

如果是我,我會設置一個身份驗證的Web服務。我認爲你打開了允許任何人在沒有HttpHandler驗證正在上傳的文件的情況下將文件塞進你的服務器的能力。

+0

安全性在別處處理 - 我只接受來自可信來源的文件。我可以去網絡服務路線,但寧願不。 – cymorg