2010-11-22 44 views
0

我想使用jquery + javascript實現電子郵件的附件功能,例如Gmail。如何在javascript中使用輸入類型文件獲取文件的完整路徑?

所以我使用輸入類型文件來選擇文件 - 它只給出文件的名稱,而不是它所在文件的完整路徑。我想要文件的完整路徑,以便將文件轉換爲字節,然後用文件字節向服務器發送ajax請求。我用這個:

<input type="file id="fileUpload"> 
var filePath=$('#fileUpload').val(); 

filePath VAR包含所選文件,而不是完整路徑的唯一名字。我在網上搜索它,但似乎出於安全原因,瀏覽器(FF,鉻)只是給文件的名稱。

謝謝。

+0

你的意思是你需要知道他住在哪裏? – 2010-11-22 10:08:14

+0

你的問題是關於完整的文件路徑。但在我看來,你真的想上傳一個文件。爲此,你可以谷歌JQuery文件上傳。 – extraneon 2010-11-22 10:11:00

+0

是的,我想要在哪裏文件住在客戶端 – 2010-11-22 10:20:11

回答

1

你不需要它。相信我。

你最好打賭,Javaranch: File Upload How-to

+0

這並不能解決任何問題。我正在做一個離線的基於瀏覽器的應用程序,並需要插入圖像 - 但沒有辦法,因爲我「不需要它」 不要傳播愚蠢,請 – TheMorfeus 2015-03-12 22:57:39

0

這是不可能的。如果這是可能的,我可以通過操縱你的上傳字段來訪問硬盤上的任何文件。無論如何,你爲什麼需要它?

+0

我想爲電子郵件創建文件 – 2010-11-22 10:18:49

+0

@Sonal Patil:你發送電子郵件客戶端?如果沒有,那麼您仍然需要上傳該文件(不需要完整的路徑)。 – jwueller 2010-11-22 10:41:21

0

正如您已經提到的,許多瀏覽器都不會允許您這樣做。這是1)一件好事(安全和什麼),2)正確的答案(沒有辦法迫使他們給出完整的路徑,缺少一些利用)。對不起,你不喜歡它,但這不太可能使答案不同。

更積極的一點是,可能使用某些Flash或Java小程序訪問本地文件(例如Uploadify),但用戶需要允許其權限提升。

編輯:我查了一下GMail做了什麼,你可能想要一些與你的問題完全不同的東西:它使用巧妙的僞裝iframe(沒有邊框,相同的背景,看起來像頁面的一部分),它包含一個小表單上傳文件。簡化:

<form id="main_mail_form"> 
    <input type="hidden" name="compose_mail_identifier" value="id_beef-cafe"> 
    <!-- buttons and previous form fields - subject, to, cc --> 
    <iframe src="attachments?for_message=id_beef-cafe"> 
    <!-- note that we're passing  ^^^^^^^^^^^^ the same identifier here --> 
    </iframe> 
    <!-- other form fields and buttons --> 
</form> 

的iframe中:

<form id="attachment_mail_form"> 
    <input type="hidden" name="compose_mail_identifier" value="id_beef-cafe"> 
    <!-- ^^ note that this has the same value as the main form --> 
    <input type="file"> 
    <!-- other form elements --> 
</form> 

當您添加的附件的郵件,你只提交的iframe裏面的表單。 Google似乎使用一些每個消息唯一的標識符(在該示例中命名爲compose_mail_identifier)將附件與電子郵件匹配。這樣,附件和消息就會以不同的形式處理,並且只有在您點擊「發送」時纔會合併到電子郵件中。

0

您將無法以這種方式訪問​​文件,因爲它會破壞您的瀏覽器執行的基本安全規則。我喜歡使用的一個技巧是創建一個沒有邊框的iframe,用於存放上傳表單。然後,您應該能夠上傳文件,並且如果您決定將附件的記錄插入到數據庫中,則可以使用文件的名稱和某種類型的ID將其發回到父窗口。我使用iframe是因爲它模仿了您想要在現代Web應用程序中實現的那種「AJAX」行爲。

幾天前,我創建了一個類似的電子郵件附件解決方案。這並不像你希望的那樣簡單,所以是的,簡短的回答是你將不得不多做一些工作和思考。

相關問題