13新浪微存儲andro開發(fā)者_(dá)第1頁
13新浪微存儲andro開發(fā)者_(dá)第2頁
13新浪微存儲andro開發(fā)者_(dá)第3頁
13新浪微存儲andro開發(fā)者_(dá)第4頁
13新浪微存儲andro開發(fā)者_(dá)第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、新浪微盤 VDiskAndroid SDK 開發(fā)者文檔微盤 Android SDK 開發(fā)者微盤 OpenAPI、全平臺 SDK:240235926:134719337 162285095請先前往微盤開發(fā)者中心為微盤開發(fā)者,并創(chuàng)建應(yīng)用。認(rèn)證相關(guān)OAuth2.0(開放)是一個開放標(biāo)準(zhǔn),用戶后,第(如應(yīng)用無需獲取用戶的用戶,和其他文件)。名和就可以該用戶在某一上的以下介紹操作步驟:1. 在 Eclipse 中導(dǎo)入 VDiskSdk 項(xiàng)目。2. 在您的項(xiàng)目(如果已經(jīng)存在)右鍵 Properties - Android - Library - Add 添加VDiskSdk。3. 在您的項(xiàng)目的 Andro

2、idManifest.xml 中加入以下可能需要使用的權(quán)限:4.在您的項(xiàng)目里負(fù)責(zé)認(rèn)證的 Activity 中繼承接口 implements VDiskDialogListener。5.在您的項(xiàng)目中設(shè)定開發(fā)者應(yīng)用的 App Key 及 App Secret,開發(fā)者可登錄新浪微盤開發(fā)者中心例如進(jìn)入“應(yīng)用”查看。設(shè)定與 App Key 對應(yīng)的應(yīng)用回調(diào)地址,此地址可在開發(fā)者登陸新浪微盤開發(fā)平臺后,進(jìn)應(yīng)用 - 編輯應(yīng)用信息 - 回調(diào)地址”進(jìn)行設(shè)置和查看,如需使用微盤 Token 方式認(rèn)入“證登陸,則該應(yīng)用回調(diào)頁不可為空。private static final String REDIRECT_URL =

3、 "/填入開發(fā)者應(yīng)用的回調(diào)地址"public static final String CONSUMER_KEY = "/填入開發(fā)者應(yīng)用的App Key" public static final String CONSUMER_SECRET = "/填入開發(fā)者應(yīng)用的 App Secret"<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.p

4、ermission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.WRITE_APN_SETTINGS" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />

5、<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />已經(jīng)使用或需要配合使用新浪SDK 的應(yīng)用開發(fā)者,如果已經(jīng)獲取用戶的Token,也可以選擇Token 方式進(jìn)行微盤的認(rèn)證和登錄。Token 是一個以”2.00”為開頭的字符串。如需使用Token 直接微盤的 API,則這個字段不能為空。p

6、ublic static final String WEIBO_ACCESS_TOKEN = "2.00xbOE8I0Z_."在使用新浪Token 直接登錄的時(shí)候,SDK 本身并不直接在認(rèn)證階段檢查 Token 字符串,開發(fā)者需保證獲取到的Token 的正確性,否則可能會接收到如下異常信息:VDiskServerException (nginx/1.0.5): 504 Gateway Timeout (50403: Dependent servicefailed.)6.全局一個會話,并在您的項(xiàng)目 onCreate()時(shí)對其進(jìn)行初始化:對session進(jìn)行創(chuàng)建時(shí),注意到第三個

7、參數(shù)AccessType.APP_FOLDER,代表適合普通開發(fā)者使用的沙箱(SandBox)模式,開發(fā)者應(yīng)用在此模式下對用戶微盤空間的改動與微盤,僅共享空間。另一種參數(shù)為AccessType.VDISK的模式僅提供Web站上的內(nèi)容完全給部分擁有高級權(quán)限AppKey的開發(fā)者。7.使用新浪Token 登錄:使用微盤認(rèn)證登錄:session.setRedirectUrl(REDIRECT_URL);無論Token 或微盤認(rèn)證,都需要執(zhí)行以下語句session.authorize(OAuthActivity.this, OAuthActivity.this);8.連接后,即可登入并執(zhí)行您的其他操作9

8、.以下方法需要重載/* 認(rèn)證結(jié)束后的回調(diào)方法* Callback method after authentication.*/ Overridepublic void onComplete(Bundle values) if (session.isLinked() startActivity(new Intent(this, VDiskTestActivity.class); finish();WeiboAccessToken weiboToken = new WeiboAccessToken(); weiboToken.mAccessToken = OAuthActivity.WEIBO_A

9、CCESS_TOKEN; session.enabledAndSetWeiboAccessToken(weiboToken);VDiskAuthSession session;AppKeyPair appKeyPair = new AppKeyPair(CONSUMER_KEY, CONSUMER_SECRET);session = VDiskAuthSession.getInstance(this,appKeyPair,AccessType.APP_FOLDER);if (values != null) AccessToken mToken = (AccessToken) values.ge

10、tSerializable(VDiskAuthSession.OAUTH2_TOKEN); session.finishAuthorize(mToken);startActivity(new Intent(this, VDiskTestActivity.class);finish();/* 認(rèn)證出錯的回調(diào)方法* Callback method for authentication errors.*/ Overridepublic void onError(VDiskDialogError error) Toast.makeText(getApplicationContext(),"A

11、uth error : " + error.getMessage(), Toast.LENGTH_LONG).show();/* 認(rèn)證異常的回調(diào)方法* Callback method for authentication exceptions.*/ Overridepublic void onVDiskException(VDiskException exception) / TODO Auto-generated method stub Toast.makeText(getApplicationContext(),"Auth exception : " + ex

12、ception.getMessage(), Toast.LENGTH_LONG).show();/* 認(rèn)證被取消的回調(diào)方法* Callback method as authentication is canceled.*/ Overridepublic void onCancel() Toast.makeText(getApplicationContext(), "Auth cancel",Toast.LENGTH_LONG).show();用戶信息相關(guān)接口1.在使用新浪微盤SDK所有相關(guān)API前,務(wù)必:并初始化VDiskAPI。VDiskAPI<VDiskAuthS

13、ession> mApi;與認(rèn)證部分類似,需使用開發(fā)者應(yīng)用的AppKey和AppSecret對全局會話session進(jìn)行初始化:并使用session初始化mApi:mApi = new VDiskAPI<VDiskAuthSession>(session);2.獲取用戶微盤空間信息,用于開發(fā)者協(xié)調(diào)自身程序所需的方式:Account account = mApi.accountInfo();account.quota (long)用戶微盤總空間Account.consumed (long)用戶微盤已使用空間3.用戶會話注銷:session.unlink();VDiskAuthS

14、ession session;AppKeyPair appKeyPair = new AppKeyPair(OAuthActivity.CONSUMER_KEY, OAuthActivity.CONSUMER_SECRET);session = VDiskAuthSession.getInstance(this, appKeyPair, AccessType.APP_FOLDER);上傳模塊1.小文件上傳使用發(fā)起一次小文件上傳請求,并可手動中斷,如遇重復(fù)文件則將其覆蓋。其是對的封裝。如果不希望覆蓋,可修改參數(shù)值 boolean overwrite 為 false。例如UploadRequest

15、 mRequest;mRequest = mApi.putFileOverwriteRequest(path, fis, mFile.length(),new ProgressListener() Overridepublic long progressInterval() / 在這里設(shè)置進(jìn)度更新間隔,缺省為0.5秒return gressInterval();Overridepublic void onProgress(long bytes, long total) / 在這里可以處理進(jìn)度更新/ 參數(shù)bytes:當(dāng)前已完成上傳的字節(jié)數(shù)/ 參數(shù)total:總字節(jié)數(shù)/ 例如 p

16、ublishProgress(bytes););putFileRequest(String path, InputStream is, long length, boolean overwrite, String parentRev, ProgressListener listener) throws VDiskExceptionParameters:path the full VDisk path where to put the file, including directories and filename.is the InputStream from which to upload.

17、length the amount of bytes to read from the InputStream.listener an optional ProgressListener to receive upload progress updates, or null.Returns:an UploadRequest.VDiskAPI.putFileOverwriteRequest(String path, InputStream is, long length, ProgressListener listener) throws VDiskException另外調(diào)用 mRequest.

18、abort();可將上傳會話中斷,并將拋出異常具體實(shí)現(xiàn)可參考 VDiskSdk_example 中 com.vdisk.android.example.UploadPicture.java2.大文件分段上傳大文件分段上傳由 Sina Simple Storage Service(Sina S3)服務(wù)器及微盤服務(wù)器的接口支持,在開發(fā)Android 應(yīng)用時(shí)可調(diào)用 SDK 的相應(yīng) API 實(shí)現(xiàn)。使用將較大的文件分段后上傳。其是對VDiskAPI.putLargeFileRequest(String srcPath, String desPath, long length, long segmentL

19、ength, boolean overwrite, String parentRev, ComplexUploadHandler handler) throws VDiskException的封裝。如果不希望覆蓋,可修改參數(shù)值 boolean overwrite 為 false。例如putLargeFileRequest(srcPath, desPath, length, -1, true, null, handler);其中參數(shù) long segmentLength 為文件分段長度,如小于 1,則采用默認(rèn)分片大小 4MBlong .VDiskAPI.UPLOAD_DEFAULT_SECTIO

20、N_SIZE = 4194304 0x400000其中參數(shù) ComplexUploadHandler handler 是一個用于實(shí)時(shí)獲取上傳進(jìn)度和狀態(tài)的協(xié)調(diào)類。同時(shí),通過此類,可以,更新和刪除本地?cái)?shù)據(jù)庫中的上傳分段信息。例如handler = new ComplexUploadHandler(mContext) Overridepublic void onProgress(long bytes, long total) / 在這里可以處理進(jìn)度更新Parameters:srcPath the local path of the file.desPath the full VDisk path w

21、here to put the file, including directories and filename.length the length of the local file.handler the handler to control the upload session.VDiskAPI.putLargeFileOverwriteRequest(String srcPath, String desPath, long length, ComplexUploadHandler handler) throws VDiskExceptioncatch (VDiskPartialFile

22、Exception e) / 開發(fā)者可捕獲該異常并做相應(yīng)處理使用開發(fā)者可獲取當(dāng)前大文件的上傳狀態(tài),并做相應(yīng)操作。大文件分段上傳流程:(1)首先通過獲取離當(dāng)?shù)刈罱腟ina Simple Storage Service(Sina S3)服務(wù)器的。(2)計(jì)算要上傳文件的 sha1 值,用于與服務(wù)器的文件列表比對,如果有一致情況,則會調(diào)用秒傳接口,由服務(wù)器端直接做文件的邏輯搬移工作,秒傳可直接返回。(3) 獲取批量簽名信息,以及此文件的每一個分段將要上傳到的分布服務(wù)器地址。文件被分為若干段上傳時(shí),每一段有均可能傳向不同的地址,并在完成上傳時(shí)由 Sina S3 服務(wù)器完成文件分段的合并。(4) 創(chuàng)建每

23、一個文件分段的 md5 值,用于同服務(wù)器驗(yàn)證每一個上傳文件的分段是否保持正確性和完整性。(5)開始上傳文件分段。每個分段時(shí)將會將當(dāng)前進(jìn)度信息寫入數(shù)據(jù)庫。Overridepublic void startedWithStatus(ComplexUploadStatus status) switch (status) case ComplexUploadStatusLocateHost: Log.d(TAG, "Getting the nearest host."); break;case ComplexUploadStatusCreateFileSHA1: Log.d(TAG

24、, "Creating the sha1 of file"); break;case ComplexUploadStatusInitialize:Log.d(TAG, "Signing each segment of file."); break;case ComplexUploadStatusCreateFileMD5s: Log.d(TAG, "Creating each segment's md5."); break;case ComplexUploadStatusUploading: Log.d(TAG, "

25、Uploading one segment."); break;case ComplexUploadStatusMerging: Log.d(TAG, "File Merging."); break;default:break;/ 參數(shù)bytes:當(dāng)前已完成上傳的字節(jié)數(shù)/ 參數(shù)total:總字節(jié)數(shù)/ 例如 publishProgress(bytes);(6)完成文件所有分段的上傳,清除。服務(wù)器端合并文件的接口。并將本文件的數(shù)據(jù)庫信息若當(dāng)此文件上傳人為或意外中斷,再次上傳時(shí)將檢查數(shù)據(jù)庫中是否存在該文件的上傳會話信息,如果有上傳且未過期,則從上次的文件分片計(jì)數(shù)之后開始

26、,進(jìn)行續(xù)傳。數(shù)據(jù)庫中僅了兩個字段值,file_id 和 file_obj。file_id,MD5(上傳文件本地路徑 +上傳文件的微盤目標(biāo)路徑),用來標(biāo)識待上傳的文件;file_obj,表示文件對象序列化后的形式。開發(fā)者如需添加處理其他字段可修改數(shù)據(jù)表,并可通過重載以下方法自定義本地文件分段信息的方式,及對應(yīng)操作:數(shù)據(jù)庫信息:更新數(shù)據(jù)庫信息: void com.vdisk.android.ComplexUploadHandler.updateUploadFileInfo(VDiskUploadFileInfo fileInfo) throws VDiskException刪除數(shù)據(jù)庫信息: voi

27、d com.vdisk.android.ComplexUploadHandler.deleteUploadFileInfo(VDiskUploadFileInfo fileInfo)另外調(diào)用 handler.abort();可將上傳會話中斷,并將拋出異常具體流程可參考VDiskSdk_example 中 com.vdisk.android.example.LargeFileUpload.java3.文件使用VDiskAPI.createDownloadDirFile(String targetPath)創(chuàng)建一個文件的位置。使用catch (VDiskPartialFileException e

28、) / 開發(fā)者可捕獲該異常并做相應(yīng)處理VDiskUploadFileInfo com.vdisk.android.ComplexUploadHandler.readUploadFileInfo(StringsrcPath, String desPath) throws VDiskException將文件從微盤服務(wù)器中下來并寫入本地文件中。例如首先在本地創(chuàng)建一個文件存放位置,并建立一個文件輸出流。其中 createDownloadDirFile 方法將在本地目錄創(chuàng)建一個名為“目標(biāo)文件名.vdisktemp”的臨時(shí)文件。當(dāng)文件后,將臨時(shí)后綴.vdisktemp 去掉,即恢復(fù)目標(biāo)文件名。privat

29、e VDiskFileInfo info;info = mApi.getFile(mPath, null, mFos, file,new ProgressListener() Overridepublic long progressInterval() / 在這里設(shè)置進(jìn)度更新間隔,缺省為0.5秒return gressInterval();Overridepublic void onProgress(long bytes, long total) / 在這里可以處理進(jìn)度更新/ 參數(shù)bytes:當(dāng)前已完成的字節(jié)數(shù)/ 參數(shù)total:總字節(jié)數(shù)/ 例如mFileLen = tota

30、l;file = mApi.createDownloadDirFile(mTargetPath); try mFos = new FileOutputStream(file, true); catch (FileNotFoundException e) mErrorMsg = "Couldn't create a local file to store the file" return false;Parameters:path the VDisk path to the file.rev the revision (from the file's meta

31、data) of the file to download, or null to get the latest version.os the OutputStream to write the file to.listener an optional ProgressListener to receive progress updates as the file downloads, or null.targetFile Returns:the VDiskFileInfo for the downloaded file.VDiskFileInfo.VDiskAPI.getFile(Strin

32、gpath,Stringrev, OutputStream os, File targetFile, ProgressListener listener) throws VDiskException若此文件被人為或意外中斷,再次時(shí)將檢查目標(biāo)路徑下是否存在名為“目標(biāo)文件名.vdisktemp”的文件,若時(shí)添加 Http Header:文件名一致,則進(jìn)行斷點(diǎn)續(xù)傳,將在向 Sina S3 服務(wù)器請求以通知服務(wù)器從文件的何部始繼續(xù)。另外,調(diào)用 mFos.close();可將流關(guān)閉,中斷會話,并將拋出異常catch (VDiskPartialFileException e) / 開發(fā)者可捕獲該異常并做相

33、應(yīng)處理req.setHeader("Range", "bytes=" + range + "-"); req.setHeader("If-Range", """ + md5 + """);publishProgress(bytes););文件、目錄操作相關(guān)接口1.縮略圖使用縮略圖并將其寫入本地文件中。例如mApi.getThumbnail(path, mFos, ThumbSize.ICON_640x480, null);2.獲取文件夾下的目錄信息使用在當(dāng)

34、前路徑指向一個文件夾時(shí),若第三個參數(shù)為 boolean list 為 true,可獲取到當(dāng)前目錄path 下的所有文件和子目錄的信息列表。此參數(shù)僅對文件夾路徑生效。例如Entry metadata = mApi.metadata(path, null, true, false); List<Entry> contents = metadata.contents;Parameters:path the VDisk path to the file or directory for which to get metadata.hash if you previously got met

35、adata for a directory and have it stored, pass in the returned hash. If the directory has not changed since you got the hash, a304 VDiskServerException will be thrown. Pass in null for files or unknown directories.list if true, returns metadata for a directory's immediate children, or just the d

36、irectory entry itself if false. Ignored for files.includeDeleted optionally gets metadata for a file at a prior rev (does not apply to folders). Use false for the latest metadata.Returns:a metadata Entry.VDiskAPI.metadata(String path, String hash, boolean list, boolean includeDeleted) throws VDiskEx

37、ceptionParameters:path the VDisk path to the file for which you want to get a thumbnail. os the OutputStream to write the thumbnail to.size the size of the thumbnail to download.format the image format of the thumbnail to download.listener an optional ProgressListener to receive progress updates as

38、the thumbnail downloads, or null.Returns:the VDiskFileInfo for the downloaded thumbnail.VDiskAPI.getThumbnail(Stringpath,OutputStreamos,ThumbSizesize, ProgressListener listener) throws VDiskException通過for (Entry entry : contents) 可遍歷得到所有文件名和文件夾名 entry.fileName()。另外,可用 entry.isDir 字段是否是一個文件夾并做區(qū)別或排序操作

39、。3.獲取文件詳細(xì)信息使用在當(dāng)前路徑指向一個文件時(shí),可獲得該文件的詳細(xì)信息。在當(dāng)前路徑指向一個文件夾時(shí),若第三個參數(shù) boolean list 為 false,可獲得該文件夾的詳細(xì)信息;若 boolean list 為 true,除獲得詳細(xì)信息外,還可獲得該目錄下所有文件和子目錄的信息列表,詳見上一項(xiàng)。例如可獲得4.獲取文件的歷史版本使用可獲得指定目錄下同名文件的所有歷史版本列表。如果文件被執(zhí)行過重命名,移動或刪除操作,則可能會產(chǎn)生多個歷史版本。開發(fā)者可通過版本號管理文件還原。Parameters:path the VDisk path to the file for which to get

40、 revisions (directories are not supported).VDiskAPI.revisions(String path, int revLimit) throws VDiskExceptionmetadata.fileName() 文件名metadata.size文件大小metadata.modified文件修改時(shí)間metadata.path文件微盤路徑Entry metadata = mApi.metadata(path, null, true, false);Parameters:path the VDisk path to the file or direct

41、ory for which to get metadata. hash if you previously got metadata for a directory and have it stored, pass in the returned hash. If the directory has not changed since you got the hash, a 304 VDiskServerException will be thrown. Pass in null for files or unknown directories.list if true, returns me

42、tadata for a directory's immediate children, or just the directory entry itself if false. Ignored for files. includeDeletedoptionally gets metadata for a file at a prior rev (does not apply to folders). Use false for the latest metadata.Returns:a metadata Entry.Entry .VDiskAPI.metadata(String pa

43、th, String hash, boolean list, boolean includeDeleted) throws VDiskException例如通過for (Entry entry:contents)可遍歷得到5.搜索使用進(jìn)行搜索。例如通過for (Entry entry: result) 可遍歷得到所有符合搜索的文件名和文件夾名entry.fileName()。另外,可用 entry.isDir 字段是否是一個文件夾并做區(qū)別或排序操作。6.獲取文件的使用獲得文件的及相關(guān)信息。Parameters:path the VDisk path of the file for which

44、to get a streaming link.VDiskAPI.media(String path, boolean ssl) throws VDiskExceptionList<Entry> result = mApi.search("/", keyword, -1, false);Parameters:path the VDisk directory to search in.query the query to search for (minimum 3 characters).fileLimit theum number of file entries

45、 to return. Default is 1,000 if you pass in 0 or less, and 1,000 is the most that will ever be returned. includeDeleted whether to include deleted files in search results.Returns:a list of metadata entries of matching files.VDiskAPI.search(String path, String query, int fileLimit, boolean includeDel

46、eted) throws VDiskExceptionentry.fileName()文件名entry.rev 對應(yīng)版本號List<Entry> contents = mApi.revisions(path, -1);revLimit theum number of revisions to return. Default is 10 if you pass in 0 or less, and 1,000 is the most that will ever be returned.Returns:a list of metadata entries.例如可獲得7.獲取用戶文件和目

47、錄的操作變化使用獲得一個,記載了某一個文件的修改操作。此功能僅適用于部分需要本地文件與服務(wù)器進(jìn)行實(shí)時(shí)文件同步的開發(fā)者,如微盤PC 客戶端。具體接口調(diào)用可參考 example 中的方法 private void getDelta(final String cursor) 進(jìn)行查看。Parameters:cursor On the first call, you should pass in null. On subsequent calls, pass in the cursor returned by the previous call.Returns:A single DeltaPage o

48、f results. The hasMore field will tell you whether the server has more pages of results to return. If the server doesn't have more results, you can wait a bit (say, 5 or 10 minutes) and poll again.VDiskAPI.delta(String cursor) throws VDiskExceptionmedia.url 文件的地址media.expires地址的過期時(shí)間VDiskLink med

49、ia = mApi.media(path, false);ssl whether the streaming URL is https or http. Some Android and other platforms won't play https streams, so false converts the link to an http link before returning it.Returns:a VDiskLink for streaming the file.文件編輯相關(guān)接口1.使用VDiskAPI.copy(String fromPath, String toPa

50、th) throws VDiskException 指明目標(biāo)文件地址和新文件名,進(jìn)行文件拷貝操作,并返回拷貝所得文件信息。例如Entry metadata = mApi.copy(fromPath, toPath);2.新建文件夾使用VDiskAPI.createFolder(String path) throws VDiskException在指定目錄位置新建一個文件夾,并返回新建的文件夾信息。例如Entry metaData = mApi.createFolder(path);3.刪除使用VDiskAPI.delete(String path) throws VDiskException進(jìn)

51、行單個文件或整個文件夾的刪除操作,并返回已刪除的文件信息。例如Entry metaData = mApi.delete(path);Parameters:path the VDisk path tete.Parameters:path the VDisk path to the new folder.Returns:a metadata Entry for the new folder.Parameters:fromPath the VDisk path to copy from.toPath the full VDisk path to copy to (not just a directo

52、ry).Returns:a metadata Entry.4.移動使用VDiskAPI.move(String fromPath, String toPath) throws VDiskException指明目標(biāo)文件地址和新文件名,進(jìn)行文件移動操作,并返回移動所得文件信息。例如Entry metadata = mApi.move(fromPath, toPath);5.還原使用VDiskAPI.restore(String path, String rev) throws VDiskException 可將微盤上的文件還原到某個版本號,并返回經(jīng)還原后的文件信息。只要確定文件路徑,該操作在文件已經(jīng)被移動甚至刪除的情況下,仍可以被執(zhí)行。例如Entry metadata = mApi.restore(path, revision); 可獲得me

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論