flex上傳的是文件流,你應該在服務端接到這個位元組流 將其創建成文件對象 並保存在伺服器專本地磁屬盤中獲得路徑返回給前台,如果你們用node js做的伺服器 也是同理 一定有處理流的方法,關鍵是你要理解flex 通過onload載入成功後在成功事件對象中取得的是 這個文件的信息 包括 位元組流啊 寬高啊 名字啊等等。不知道能否讓你理解。
B. js中使用window.location.href下載文件的默認目錄
public static void selectSort(int[]a)
{
int minIndex=0;
int temp=0;
if((a==null)||(a.length==0))
return;
for(int i=0;i<a.length-1;i++)
{
minIndex=i;//無序區的最小數據數組下標
for(intj=i+1;j<a.length;j++)
{
//在無序區中找到最小數據並保存其數組下標
if(a[j]<a[minIndex])
{
minIndex=j;
}
}
if(minIndex!=i)
{
//如果不是無序區的最小值位置不是默認的第一個數據,則交換之。
temp=a[i];
a[i]=a[minIndex];
a[minIndex]=temp;
}
}
}
C. 用js代碼實現將html文件自動保存本地指定路徑,並在當前窗口刷新
只用 js 是做不到的。
如果能做到,想想看所有的網站都能隨便往你硬碟里存文件了,那不是分分鍾中毒么。
D. JS 下載/導出 csv、excel、txt 、img等文件的方法總結
1. 調用後端介面導出文件
示例下載介面url https://gold-cdn.xitu.io/extension/0.3.9/package.crx
1.1 window.open(url)
會打開一個新窗口,開始下載後會自動關閉新窗口。Safair 下載後沒有關閉新窗口。
Chrome、IE、Safair支持,貌似火狐不支持
1.2 window.location=url
在當前窗口下載
Chrome、Safair支持
1.3 iframe
在HTML中,iframe 的屬性用src,但在JS中,只有部份瀏覽器支持修改src(讀是沒問題),真正通用的是要修改對應框架的href值。
1.4 <a href="url" download="filename">點擊鏈接下載</a>
HTML5中給a標簽增加了一個download屬性,只要有這個屬性,點擊這個鏈接時瀏覽器就不在打開鏈接指向的文件,而是改為下載,目前只有chrome、firefox、opera、Edge支持。常用此方法點擊下載圖片。
IE既不支持a標簽的download屬性也不允許js調用a 標簽的click方法。
2. 前端直接導出文件到本地
2.1 將數據轉成DataURI用<a>標簽下載
<a href="DataURI" download="filename">點擊鏈接下載</a>
Data URI Scheme
Data URI Scheme是指可以在Web 頁面中包含圖片但無需任何額外的HTTP 請求的一類URI。 Data URI Scheme一般用於將經過base64編碼的數據嵌入網頁中,從而減少請求資源的鏈接數。IE8 之前的版本都不支持 data URI scheme。
DataURI的格式:
生成DataURI的方式
1. encodeURIComponent
使用這種方式,當數據過多時,URI長度容易超出瀏覽器限制。 encodeURIComponent常用來轉碼介面參數,為了避免伺服器收到不可預知的請求,對任何用戶輸入的作為URI部分的內容都需要用encodeURIComponent進行轉義。
2. URL.createObjectURL
URL.createObjectURL的參數是File對象或者Blob對象
IE10以下不支持URL.createObjectURL
2.2 windows.navigator.msSaveBlob IE10~Edge 專用
msSaveBlob 是IE10~Edge 私有方法。
2.3 execCommand
有的資料有提到IE9可以使用execCommand方法來保存數據到本地文件,但是我自己沒有驗證過,不知道是否可行。而且MDN文檔中execCommand沒有查到SaveAs命令。這塊只是做個小記錄。
js數據直接導出/下載數據到本地到方法總結
本文轉載自:https://juejin.im/post/5cd00253518825418f6f2a8c?utm_source=gold_browser_extension
E. js點擊選擇文件目錄的功能
最近做一個小項目,前端需要有一個功能是點擊某按鈕時,彈出文件選擇的框,然後獲取目錄並寫入對應的輸入框里,以往是選擇某個文件進行上傳,功能看起來有些像,但這次不同的是只能選擇某個目錄而不是文件,因為它並不是上傳,它只是為了選擇後台生成的文件保存的路徑。
於是網上查解決方案,查到兩種,
一種是僅在谷歌瀏覽器上有效的方式,在input節點里加一個屬性 webkitdirectory,就可以實現點擊彈出選擇目錄的功能,然後就可以截取目錄,此種方式對非空文件夾是可以的實現的,只需監聽此input的change事件即可,但如果選擇的是空文件夾,就不會觸發事件,就無法獲取路徑,所以這方法不復合我的需求。
另一種是只適用於IE瀏覽器的方式,即調用IE的activeX控制項,為點擊按鈕綁定事件,然後就可以獲取目錄,然後到目錄調到想要的地方即可,具體實現方式是:
<input id="show">
<button onclick="clickBtn()">點擊</button>
function click() {
try {
var Message = "\u8bf7\u9009\u62e9\u6587\u4ef6\u5939"; //選擇框提示 var Shell = new ActiveXObject("Shell.Application");
var Folder = Shell.BrowseForFolder(0, Message, 64, 17); //起始目錄為:我的電腦 //var Folder = Shell.BrowseForFolder(0, Message, 0); //起始目錄為:桌面 if (Folder != null) {
Folder = Folder.items(); // 返回 FolderItems 對象
Folder = Folder.item(); // 返回 Folderitem 對象
Folder = Folder.Path; // 返迴路徑
if (Folder.charAt(Folder.length - 1) != "\\") {
Folder = Folder + "\\";
}
document.getElementById('show').value = Folder;
return Folder;
}
} catch (e) { alert(e.message); }
}
但些方式也有一個問題是,此控制項是默認關閉的,需要用戶手動啟用,並且要把本站點加入可信任站點才行,具體設置過程是:
1. 單擊菜單工具->Internet選項->安全->受信任站點->站點->把此網站設為可信站點
2. 在自定義級別->對沒有標記為安全的ActiveX控制項進行初始化和腳本運行"----"啟用"
F. js文件 如何修改 相對路徑
"/"是你網站的根目錄,就是"www.aaa.com/"
目錄改變後,url你要改成這樣"/bbb/index.php?g=admin"
就是在前面加上"/bbb"
因為你的url寫在js文件里,所以你只能一個個js文件去改,
如果要修改的地方比較多的話,可以考慮用文本編輯器的替換功能,所有文本編輯器都有這功能
如果要修改的地方非常非常非常多的話,可以考慮用 "好壓" 自帶的 "批量字元替換" 工具
G. javaScript如何彈出文件選擇框,然後返迴文件完整路徑
1、js彈出文件選擇框:
給按鈕定義以下javascript函數:
varinputObj=document.createElement('input')
inputObj.setAttribute('id','_ef');
inputObj.setAttribute('type','file');
inputObj.setAttribute("style",'visibility:hidden');
document.body.appendChild(inputObj);
inputObj.click();
inputObj.value;
單擊已經添加函數的按鈕會彈出選擇本地文件的對話框。
2、寫一個隱藏域,當用戶選擇文件之後把圖片的路徑賦給這個隱藏域,然後在action中就可以獲取到文件的路徑了,代碼如下:
functionshowRealPath(filePath){
document.getElementsByName("textfield")[0].value=filePath;
}
<inputtype="file"name="uploadfile"onfocus="showRealPath(this.value);"/>
<inputtype="hidden"name="uploadfileRealPath">
H. js實現選擇文件夾路徑
1. js 不能實現抄選擇 文件夾。 既有的 文件選擇是 瀏覽器自帶的,js 不能對 這個文件選擇器做任何更改。
2. 如果想選擇文件夾, js 不能實現。 必須使用 activex 控制項的方式, 或者使用flex 編寫。
如 QQ空間 裡面的批量上傳控制項, 就可以讀出磁碟裡面的文件夾。